我想寫一個通用表生成器,我可以告訴它函數在每個單元的onclick事件中調用。該函數然後定義在頁面上的其他位置。如何將存儲在字符串中的函數添加到jquery.click事件
問題是我無法在正確的時刻讓頁面評估函數。我希望它將字符串轉換爲構建DOM時的函數,而不是在觸發click事件時。也許這在Javascript/JQuery中是不可能的?
我原來寫在服務器端的C#代碼的簡化版本是:
string functionCall = "DoSomething(4);";
TableCell detailCell = new TableCell();
detailCell.Attributes.Add("onClick", functionCall);
functionCall = "DoSomething(5);";
detailCell = new TableCell();
detailCell.Attributes.Add("onClick", functionCall);
,當它被呈現在瀏覽器的HTML這就工作。它變成:
function DoSomething(p)
{
alert(p);
}
<td onclick="DoSomething(4)"></td>
<td onclick="DoSomething(5)"></td>
我想在Javascript中複製此功能。
如果我做的:
var functionCall = 'DoSomething(4);';
$('#detailCell').attr('onclick', functionCall);
它不會火在IE7事件由於某種原因而觸發它在Chrome中。
如果我做的:
var functionCall = 'DoSomething(4);';
$('#detailCell1').click(function() { eval(functionCall); });
functionCall = 'DoSomething(5);';
$('#detailCell2').click(function() { eval(functionCall); });
那麼它不添加時單擊事件被改變functionCall的一段文字。相反,它會在單擊單元格時顯示functionCall。這意味着functionCall的值現在是錯誤的。
例如即使我點擊detailCell1,它總是會執行DoSomething(5),因爲這是functionCall的最後一個值。
如果我做的:
var functionCall = 'DoSomething(4);';
$('#detailCell1').click(eval(functionCall));
它添加click事件時,而被點擊時比立即運行在functionCall功能。
我希望這是有道理的,因爲它很難解釋。
基本上,我只希望能夠使用jQuery做
<td onclick="any javascript I feel like storing in a string"></td>
。
這甚至可能嗎?
這是我第一次張貼在計算器所以請溫柔...
爲什麼你需要它像一個字符串? –
爲什麼你問他爲什麼需要它像一個字符串? – jAndy
爲什麼不能直接調用該函數。 –