html替换后jquery不适用
我有一些从 $(document).eady() 函数调用的 jquery 函数,如下所示:
<script type="text/javascript">
$(document).ready(function(){
$('.table_task_type tr').mouseover(function(){
$(this).addClass("hover");
});
$('.table_task_type tr').mouseleave(function(){
$(this).removeClass("hover");
});
$('input:checkbox').click(function() {
$(this).parent().parent().toggleClass('checked');
});
});
</script>
问题是我在某些用户操作上替换了部分 html。我这样做是这样的:
$("#my_table").empty();
$("#my_table").html(data);
第一次加载页面时会触发 jquery 事件,但是一旦我的表的 html 被替换,它就不再起作用了。
有什么解决方法吗?
I have some jquery functions that I call from the $(document).eady() function like the following :
<script type="text/javascript">
$(document).ready(function(){
$('.table_task_type tr').mouseover(function(){
$(this).addClass("hover");
});
$('.table_task_type tr').mouseleave(function(){
$(this).removeClass("hover");
});
$('input:checkbox').click(function() {
$(this).parent().parent().toggleClass('checked');
});
});
</script>
The thing is that I replace part of the html on some user action. I do it like :
$("#my_table").empty();
$("#my_table").html(data);
The jquery events are fired the first time the page is loaded, but as soon as the html of my table is replaced it doesn't work anymore.
Any workaround to that ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用jquery live 方法
例子:
use jquery live method
example:
您应该按照前面的海报所建议的那样使用 .on() 方法。您想要做的是将绑定放在正在刷新的容器的父元素上。
该侦听器绑定到您要重新填充的侦听器的父容器。由于父容器 (#content) 不会重新填充,因此绑定不会中断。它还更快,因为单击事件只需冒泡到 DOM 中的一个节点,而不是一直冒泡到文档。
You should use the .on() method as the previous posters have suggested. What you want to do is put the binding on a parent element of the container that is being refreshed.
The listener is bound to the parent container of the one you are re-populating. Since the parent container (#content) is not re-populated, the binding won't break. It's also faster because the click event only has to bubble up one node in the DOM as opposed to bubbling all the way up to document.