我想從服務器端JS傳遞一個jQuery命令(以字符串的形式)到客戶端js。這使我可以從服務器端修改客戶端的DOM東西。jQuery執行字符串作爲函數
功能:
$("textArea").attr("disabled","true");
我想要做什麼:
$['$("textArea").attr("disabled","true")']();
拋出一個錯誤。思考?
我想從服務器端JS傳遞一個jQuery命令(以字符串的形式)到客戶端js。這使我可以從服務器端修改客戶端的DOM東西。jQuery執行字符串作爲函數
功能:
$("textArea").attr("disabled","true");
我想要做什麼:
$['$("textArea").attr("disabled","true")']();
拋出一個錯誤。思考?
你可以使用eval函數在客戶端:
這將立即執行你的javascript:
eval('$("textArea").attr("disabled","true")');
但是,正如在評論中說,要小心你做什麼的這是一個非常粗糙的方法。
此外,在安全方面,你真的不獲得任何東西,因爲人們仍然可以打開的開發工具,並刪除disabled屬性
立即嘗試。是的,我已經意識到了。 textarea的禁用設置只有一個設置。 Serverside,它們的名字被放入無法發佈的用戶數組中。我只需要一些安全+指標給用戶,確實已經被靜音了。順便說一句,不是唯一的視覺,表明他們已被靜音。但這是一個明顯的例子。 –
完美工作,ty –
或者,你可以打破你的字符串成多個字符串從傳遞服務器。例如:
// variables passed from the server
selector = 'textArea';
method = 'attr';
arguments = ['disabled', 'true'];
然後,你可以評價它是這樣的:
$(selector)[method](arguments[0], arguments[1]);
當然,如果參數的數目必須是動態的,它會得到一個有點棘手。
_This允許我從服務器端修改客戶端DOM的東西。這不是正確的方法。 – undefined
附近的副本http://stackoverflow.com/questions/15936011/calling-a-jquery-method-named-in-variable/15936215#15936215但像undefined說,這只是嗅到錯誤... – Alnitak
這是一個javascript聊天室。禁用html/dom元素必須在客戶端完成。試圖阻止任何聊天室客人擺弄他們的瀏覽器元素檢查員 - 即使他們「靜音」也可以讓他們發帖 –