2015-04-16 80 views
3

我需要为表格内部的div内的按钮添加一个单击事件处理程序。我如何使用jQuery达到它。这是我的div:从动态表格中的div中选择按钮

<div id = 'fromServer'></div> 

这是我如何来填充它:

function onSuccess(response) { 
    p = response; //p is global for debugging! 
    resultsArray = response.results; 
    str = '<table id=\'mytable\'>'; 
    str += '<tr><td class =\'title\'>Album</td>'; 
    str += '<td class =\'title\'>Track Name</td>'; 
    str += '<td class =\'title\'> <button id =\'save\'>Save</button></td></tr>'; 

    for (i = 0; i < resultsArray.length; i++) { 
     str += '<tr><td>' + '<img src=\'' + resultsArray[i].artworkUrl100 +'\' height=\'100\' width=\'100\'' + '</td>'; 
     str += '<td class=\'albumName\'>' + resultsArray[i].trackName.substring(0,30) + '</td>'; 
     str += '<td> <input type=\'checkbox\' class =\'checkbox\' name=\'' + i + '\'></td></tr>'; 
    } 
    str += '</table>'; 
    $('#fromServer').html(str); 
} 

这里是如何看起来:

enter image description here

现在我想添加一个click事件处理对于保存按钮,我该怎么做?这是我的尝试,但它不起作用。

$('#fromServer').find("#mytable").find("#save").bind('click', saveButtonEventHandler); 

//Event Handlers 
function saveButtonEventHandler(evt) { 
    alert("Button pressed!"); 
} 
+2

仅供参考你知道吗你也可以使用jQuery构造动态html吗?例如'var myTable = $('

');'所有的属性,属性都可以用同样的方法设置。这是更可读的语法恕我直言。 – ne1410s

+0

感谢分享! – Ammar

回答

1

由于事实表和保存按钮被动态添加到DOM,你最好使用委派事件处理程序是:

$('#fromServer').on('click', '#save', saveButtonEventHandler); 
+0

关于jQuery委托事件处理程序的好消息,所以您不必担心在何处放置用于添加Din元素的事件处理程序。 –

+1

我选择了这个答案,因为它是第一个答案。其他答案,+1。 – Ammar

+0

@Ammar是什么逻辑。真棒。 – nirmal

5

看起来内容加载ajax。 您可以使用下面的功能。

$(document).on("click", '#save', function(event) { 
    alert("button pressed"); 
});