使用Jquery更改动态生成元素的类

时间:2012-10-27 20:50:05

标签: jquery

我有一个脚本,可以使用表格动态生成网格。

//createGrid(height, width);
createGrid(1, 2);
//one row with 2 cols

创造了这个:

<table>
    <tr>
        <td></td>
        <td></td>
    </tr>
</table>

我需要为添加/更改其类的td标记添加onclick事件。我尝试了一些解决方案无济于事。有任何想法吗?我在Jquery不太好。

3 个答案:

答案 0 :(得分:3)

对于动态生成的元素,应该从元素的静态父项之一或document对象委派事件,您可以使用on方法:

$(document).on('click', 'td', function(){
   $('.selected').removeClass('selected');
   $(this).addClass('selected')
})

答案 1 :(得分:0)

您可以使用on jquery函数绑定动态生成的事件委托项,它将现有元素与事件绑定,它还将绑定动态添加的元素。 $('td').click(function(){});只绑定现有元素,但不绑定绑定后动态添加的元素。

$(document).on("click", "td", function(){
     alert("clicked");
});

委派活动

  

委派事件的优势在于它们可以处理来自的事件   稍后添加到文档中的后代元素。通过   选择一个保证在当时存在的元素   委托事件处理程序附加,您可以使用委托事件   避免频繁附加和删除事件处理程序reference

您可以使用某个父元素选择器更改文档。

答案 2 :(得分:0)

另一种使用findlivetoggleClass

的替代方案
$("table").find("td").live("click", function() {
    $(this).toggleClass("selected");
});​

JsFiddle