我有一个表由PHP和MysqL填充的多行和列。对于一些td,我在document.ready函数中添加了jQuery click-events,让用户更改内容。
但是我也可以选择在表中添加行并手动填充。但是由于我添加的行不在文档中,所以他们不会得到附加的点击事件处理程序,所以我无法点击它们来获取输入框。
<table> <tr> <td class="clickable">Some info</td> <td class="clickable">Some more info</td> <td>Unchangable info</td> </tr> ... more similar rows ... </table>
然后是jQuery
$("tr.clickable").click(function() { //add input fields } $("span#addNewRow").click(function() { $("table").append('<tr><td class="clickable"></td> ... </tr>') }
解决方法
你想使用
live events,它是在1.3引入的。
$("tr.clickable").live("click",function() { //add input fields }); $("span#addNewRow").live("click",function() { $("table").append('<tr><td class="clickable"></td> ... </tr>') });
更新:请注意,从jQuery 1.7开始,不推荐使用live()。使用on()代替。在某些情况下,delegate()可能是一个更好的选择。见下面的评论。
示例如何使用.on()
:
$("table").on("click","tr.clickable",function() { //add input fields });