2011-05-13 107 views
0

我做一個按鈕,動態與jquery事件IE的onclick不會觸發

var $btnRow = $('<input />') 
    .attr('type', 'button') 
    .attr('id', 'myID') 
    .attr('onclick', 'AddChildRow(this);') 
    .val('Row'); 
$btnRow.css({ 'width': '38px', 'padding': '0' }); 

生成的HTML後是這樣的:

<input type="button" id="myID" onclick="AddChildRow(this);" value="Row" style="width: 38px; padding: 0pt;"> 

我在我的js文件AddChildRow功能。它在FF中完美工作,但不在IE中(它不會調用AddChildRow)。有人有過同樣的問題嗎?該按鈕是動態DIV - >表格 - > TR - > TD模式的一部分。任何幫助將不勝感激。

+0

您測試的IE版本是什麼? – 2011-05-13 00:39:49

+1

jQuery可以很容易地綁定事件處理程序;不要使用'attr()'來設置'onclick'屬性。 – alex 2011-05-13 00:46:59

回答

3

嘗試不同的綁定按鈕點擊事件,並使用jQuery的click事件

var $btnRow = $('<input />') 
    .attr('type', 'button') 
    .attr('id', 'myID') 
    .val('Row') 
    .click(AddChildRow) 
    .css({ 'width': '38px', 'padding': '0' }); 

$("div").append($btnRow); 

function AddChildRow() 
{ 
    alert(this.id); 
} 

http://jsfiddle.net/hunter/nSCHn/

測試和IE 6/7/8/9工作

+0

謝謝你的解決方案。其實我只是通過複製和粘貼舊文件來將js文件轉換爲Jquery。 – 2011-05-13 00:59:18

0

你也可以使用jQuery的live()方法。 例如:

$(「#myId」)。live('click',AddChildRow);

並且隨時可以在頁面上插入myId按鈕,因爲live()方法會「發現」它並將AddChildRow函數綁定到它。