7

所有,我有一些我正在尝试调试的代码,我在我的 JS 控制台中使用了以下代码:

clickEvents = $('ul.breadcrumb[data-allownextonly]').data("events").click;
jQuery.each(clickEvents, function(key, value) {
    console.log(value.handler);
})

当我执行这个我得到错误: TypeError: undefined is not a function

我的问题是导致这种情况发生的原因是什么?从我阅读的大部分内容来看,它涉及 jQuery 未正确加载或两个脚本之间存在冲突的事实。jQuery 正在正确加载,因为我的页面上有 jQuery 可以正常工作的其他对象。我正在使用 Wordpress,所以已经没有冲突了。

在我的控制台中,我将 JS 调试更改为如下内容:

 clickEvents = jQuery('ul.breadcrumb[data-allownextonly]').data("events").click;
jQuery.each(clickEvents, function(key, value) {
    console.log(value.handler);
})

当我执行此操作时,出现以下错误: TypeError: Cannot read property 'click' of undefined

谁能让我知道我会收到这些错误的其他原因?如果我有一个冲突的脚本或类似的东西,我怎样才能找出冲突在哪里?

谢谢!

4

3 回答 3

3

根据 jQuery API,.data( key )如果匹配的元素没有任何与键匹配的数据,则该方法返回 undefined。看看它的用法http://api.jquery.com/data/。它在任何情况下都只对匹配集中的第一个元素进行操作,因此您不能使用它来获取单击事件处理程序的数组。照原样,就是说第一个匹配的元素没有数据属性“事件”。一旦你得到附加的数据,做

var clickEvents = [];
$( selector ).data( key ).each( function() { 
    clickEvents.push( $(this).click );
});

收集点击事件。

于 2012-05-31T03:45:45.547 回答
0

当您尝试执行未初始化或未正确初始化的函数时,您会收到该错误。

于 2012-05-31T03:25:39.343 回答
0

似乎jQuery('ul.breadcrumb[data-allownextonly]').data("events")undefined,因此任何取消引用都会引发错误。

顺便说一句,更改$jQuery不会在您的代码中发生太大变化。如果没有加载 jQuery,它会给出不同的错误。

于 2012-05-31T03:30:34.283 回答