Javascript 返回false,带.on(),仍在传播

Javascript 返回false,带.on(),仍在传播,javascript,jquery,events,bind,Javascript,Jquery,Events,Bind,我在处理这段代码时遇到了麻烦 首先,我有一系列的图片,每个都在一个锚内 a>img a>img a>img 我想要的功能是,当您将鼠标滚动到图像上时,它会在锚点上动态添加两个共享按钮: a>.fb+.twitter+img 当你滚下来时,它们会被移除 问题是,我还有一个灯箱,它绑定到a。这意味着,当您单击其中一个共享div时,它会正确显示共享框,但也会触发lightbox 我已经尽了一切努力来阻止这一切preventDefault(),stopPropagation()和返回false。它们都不

我在处理这段代码时遇到了麻烦

首先,我有一系列的图片,每个都在一个锚内

a>img

a>img

a>img

我想要的功能是,当您将鼠标滚动到图像上时,它会在锚点上动态添加两个共享按钮:

a>.fb+.twitter+img

当你滚下来时,它们会被移除

问题是,我还有一个灯箱,它绑定到
a
。这意味着,当您单击其中一个共享div时,它会正确显示共享框,但也会触发lightbox

我已经尽了一切努力来阻止这一切
preventDefault()
stopPropagation()
返回false
。它们都不能阻止div单击冒泡到锚并触发lightbox

首先是我的滚动代码
App.postImages
只是jQuery图像锚的缓存集合。我使用
.add()
也可以添加嵌入式视频容器

rolloverShares: {
  divs: $('<div class="image-rollover rollover-facebook">Facebook</div><div class="image-rollover rollover-twitter">Twitter</div>'),

  init: function() {
    var _this = this;
    App.postImages.add('.embed-container', '#content-wrapper').hover(
      function() {
        _this.divs.prependTo($(this)).show();
      },
      function() {
        $('div', this).remove();
      }
    );

    $(document).on('click', '.rollover-facebook', function() {
      Social.facebook.popup();
      return false;
    });

    $(document).on('click', '.rollover-twitter', function() {
      Social.twitter.popup();
      return false;
    });
  }
},
我还想我应该把
App.postmages
中的内容放进去。就是这个,


$('a img','#content wrapper')。而不是('.share button img')。parent().addClass('post-image')

我没有过多地查看您的代码,但看起来您正在
文档中运行
return false
。这是传播的最后一站,那么您希望它阻止什么呢?您将事件绑定到文档。当事件到达文档时,lightbox已经发生了。嗯,@KevinB我还要绑定到什么?如果你给我一个答案,我会记下来的。我曾经尝试过,任何时候我使用的不是
$(document)
的东西似乎都不起作用。在这种情况下,您必须将其直接绑定到元素以停止lightbox。而且必须在灯箱部分出现之前完成。谢谢,成功了:)
lightbox: function() {
  if (isDesktop) {
    App.postImages.nivoLightbox({
      effect: 'fade', 
      theme: 'default',
      keyboardNav: false,
      clickOverlayToClose: true,
      errorMessage: 'The requested image cannot be loaded. Please try again later.'
    });
    $(document).on('click', '.nivo-lightbox-image img', function() {
      $(this).closest('.nivo-lightbox-overlay').find('.nivo-lightbox-close').click();
    });
  } else {
    App.postImages.click(function(e) {
      e.preventDefault();
    });
  }
},