jQuery单击脚本生成元素上的事件



我有这个脚本:

<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,并在您的身体处理程序之前被调用并防止处理程序正确发射。

尝试将对话框的关闭事件绑定并在此处删除类。

相关内容

  • 没有找到相关文章

最新更新