第一次尝试jQuery点击事件失败

问题描述:

我有一个函数绑定到我的onClick为特定的类。该功能似乎没有在第一次尝试时触发,但在此之后正常工作。奇怪的是,我在脚本中的警报每次都有效,所以我无法弄清楚为什么其余的函数失败。第一次尝试jQuery点击事件失败

$(document).ready(function() { 
    // capture original link and asset name on click 
    $("a.dggate").bind("click", function() { 
     window.tempURL = $("a.dggate").attr("href"); 
     window.assetTitle = $("a.dggate").attr("title"); 
     strAsset = assetTitle; 
     alert("click " + knownUser); 
     if (knownUser != true) { 
      //alert(tempURL); 
      $("a.dggate").fancybox({ 
       // choose which form to display 
       href: "http://www.domain.com/", 
       type: 'iframe', 
       scrolling: 'no', 
       width: "60%", 
       height: "100%", 
       titleShow: false 
      }); 
     } else { 
      // send blind form if user is known 
      bFormSubmit(); 
      return false; 
     } 
    }); // click 
}); // ready 

任何帮助,将不胜感激。

+0

微不足道的问题,但已知用户==真正的第一次点击? – Johan 2013-02-19 20:15:47

+1

可能与您的问题没有关系,但处理程序中的$(“a.dggate”)应该是'$(this)'。否则,它适用于所有类的成员,而不仅仅是你点击的那个(我假设你正在使用一个类,因为可能有多个类)。 – Barmar 2013-02-19 20:19:58

+1

我想你误解了如何使用FancyBox。在元素上调用'fancybox()'不会显示该框,它只是将fancybox的click处理程序绑定到元素。然后下一次点击运行fancybox的处理程序。 – Barmar 2013-02-19 20:30:14

尝试写

$("a.dggate").click(function (e) { 
    e.preventDefault(); 

的而不是 “绑定” 行,似乎工作。

+0

这解决了这个问题。我认为Barmar在向课程分配fancybox是正确的,但是,这个函数实际上是覆盖链接的真实href的默认值,因为它是一个外部url,并且还有其他时间与内联页。点击功能似乎保留了原始的href,直到第二次点击链接。非常感谢! – Avebone 2013-02-19 21:45:15