我有这个脚本:
<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。
模态对话框的密闭方法正在下部较低的DOM,并在您的身体处理程序之前被调用并防止处理程序正确发射。
尝试将对话框的关闭事件绑定并在此处删除类。