jQuery live()...需要点击两次才能激活链接吗?

6
我有以下简单的代码片段,如下所示:

$(function() {
  $('a.add-photos-link').live('click', function(e) {
    $(this).colorbox({
      overlayClose: false,
      onComplete: function() {
        $('#add_photos').submit(function(e) {
          // more stuff to do
          e.preventDefault();
        });
      }
    });
    e.preventDefault();
  });
});

然而,这似乎只在单击链接两次后才能生效。这些链接是动态添加到页面上的(a.add-photos-link)。

为什么会发生这种情况,我该如何修复它,使其在第一次单击后就能触发?


你的JavaScript代码在页面上的哪个位置?它是在DOM树构建完成后执行的吗? - Jacob Relkin
1个回答

7
您当前的代码只能为链接创建一个colorbox。它不能打开colorbox,这就是为什么您需要单击两次链接的原因:一次创建它,再次打开它。
您可以在创建colorbox时使用“open”选项(如文档中所述)立即打开它,如下所示:
$(this).colorbox({
  open: true,
  overlayClose: false,
  onComplete: function() {
    // ...
  }
});

我有一个类似的问题。我在页面上有一张图片,并为该图片添加了一个onclick事件。我已经指定了open:true,但仍需要点击两次才能打开。 - Marc Wilson
1
@MarcWilson,请创建一个新问题并填写您的详细信息。 - brianpeiris
我发现了,jQuery发布了一个新版本,其中删除了“live”函数 - 有一个新版本的colorbox与最新的jQuery一起使用。 - Marc Wilson
三年后,这个答案仍然为人们节省时间。 - asfallows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接