单击带有2个单击处理程序的元素的jQuery错误

时间:2011-03-28 20:57:51

标签: jquery

我有两个针对同一元素的点击处理程序。

说#1

$(':input, a').bind('click', function(e) {  
  if(e.ctrlKey) {
     // do something with all links and inputs
  }
});

和#2:

$('a#some-special-link').click(function() {
 // do something special also with current link only
});

当我第一次点击链接“a#some-special-link”时,我总是在jQuery核心内部出现错误: 返回jQuery类型!==“undefined”&& !jQuery.event.triggered?

if ( !eventHandle ) {
    elemData.handle = eventHandle = function() {
        // Handle the second event of a trigger and when
        // an event is called after a page has unloaded
        return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
            jQuery.event.handle.apply( eventHandle.elem, arguments ) :
            undefined;
    };
}

错误说: TypeError:在线输入错误:2200来源:http://localhost/js/jquery-1.5.1.js

只有在我第一次点击#some-special-link链接时才会发生错误。下次每个点击处理程序都能正常工作。

我不确定是什么原因。我需要的是执行的#1和#2点击处理程序。

请帮助我找到那里发生的事情......

更新: 我收到同样的错误(当我将事件更改为悬停,并将鼠标悬停到任何链接或输入时):

$(':input, a').bind('hover', function(e) ...

1 个答案:

答案 0 :(得分:0)

你可以缩短第二次点击处理程序与onclick =“someFunction();”的绑定吗?因为它是一个你要搜索的ID,首先应该只有1个元素与第二个选择器一起返回?所以你的代码看起来像是:

$(':input, a').bind('click', function(e) {  
  if(e.ctrlKey) {
     // do something with all links and inputs
  }
});

...

<a id="some-special-link" onclick="someFunction();"></a>

HTH