[英]jquery click event on script generated element
我有这个脚本:
<script>
$(document).ready(function() {
$('.block-link').click(function() {
$('body').addClass("gallery-on");
});
$('body').delegate('.ps-toolbar-close', 'click', function() {
$('body').removeClass("gallery-on");
});
});
</script>
当我单击任何.block-link
时,脚本应该将.gallery-on
类添加到body
。
.ps-toolbar-close
元素是通过插件 (相当不错的btw!)生成的,该插件会在单击任何.block-link
时创建一个模式灯箱。
该脚本的第一部分正在工作,第二部分应该从主体中删除.gallery-on
类,但它只是关闭灯箱,然后将主体类放置在原处。
我究竟做错了什么? 我很不幸,是使用javascript和jquery的初学者。
我最好的猜测是,由于页面加载时文档中尚不存在.ps-toolbar-close
,因此脚本的第二部分没有放置任何单击处理程序,尽管我认为.delegate()
能够处理现有元素,我错了吗?
谢谢你的帮助!
这很可能是由于委托方法的一个有趣的属性。 从jQuery文档中:
补充笔记:
由于.live()方法一旦将事件传播到文档顶部便会对其进行处理,因此无法停止实时事件的传播。 类似地,由.delegate()处理的事件将传播到它们所委派的元素; 到委托事件处理程序被调用时,绑定到DOM树中其下任何元素的事件处理程序将已经执行。 因此,这些处理程序可以通过调用event.stopPropagation()或返回false来阻止委托处理程序触发。
模态对话框的close方法在DOM中向下附加,并在主体处理程序之前被调用,并防止处理程序正确触发。
尝试绑定到对话框的close事件 ,然后在其中删除类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.