你好,
编辑:正如你们大多数人建议的那样,我尝试使用.on()
而不是.live()
。但它没有帮助。这个问题不仅在于 ajax 调用,甚至尝试使用 jquery 添加新元素,事件未注册到新创建的元素。
我在下面更改了我的脚本。
如果在现有表上触发单击事件,我将添加新表。单击事件对于第一个表触发良好,但对于脚本新添加的下一个表则不触发。
我认为问题出在.each()
. 此功能不适用于新添加的元素。有什么方法可以解决这个问题吗?
我有一个 html 页面,其中内容由 ajax 事件更改。我想将点击事件注册到我的页面包含的所有表中。第一次它工作正常但是一旦内容被 ajax 更改,事件就会被触发..
HTML:
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
</head>
<style>
table{
border-collapse:collapse;
}
table td{
border:1px solid;
}
</style>
<body>
<table clk="true">
<thead>
<tr>
<td>S.No</td>
<td>Name</td>
</tr>
</thead>
<tbody>
<tr><td>1</td> <td>Rama Rao</td></tr>
<tr><td>2</td> <td>Tom Cruise</td></tr>
<tr><td>3</td> <td>Tom Honks</td></tr>
<tr><td>4</td> <td>Will Smith</td></tr>
</tbody>
</table>
</body>
脚本:
$('table').each(function(){
if($(this).attr('clk')=="true"){
$(this).find('tbody tr td').live('click',function(){
var str= $('table').html();
str = '<table clk="true">'+str+'</table>';
$('table').after(str);
});
}
});
注意:如果表仅具有属性 clk="true",则应注册事件。检查我认为“每个”循环是强制性的。
任何帮助表示赞赏。