什么导致TypeError:undefined不是函数?

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

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

当我执行这个我得到的错误:TypeError:undefined不是一个函数

我的问题是什么导致这种情况发生? 从我阅读的大部分内容来看,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:无法读取未定义的属性'click'

任何人都可以让我知道我会得到这些错误的其他原因吗? 如果我有一个冲突的脚本或类似的话,我怎么才能找出冲突的位置?

谢谢!


根据jQuery API,如果匹配的元素没有任何与键匹配的数据,那么.data( key )方法返回undefined。 看看它的用法http://api.jquery.com/data/。 它只能在匹配集中的第一个元素上运行,所以你不能用它来获得一个点击事件处理程序数组。 因为它是说第一个匹配的元素没有数据属性“事件”。 一旦获得所附的数据,就这样做

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

收集点击事件。


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


看起来jQuery('ul.breadcrumb[data-allownextonly]').data("events")undefined ,因此任何解除引用都会引发错误。

顺便说一句,将$改为jQuery在你的代码中不会有太大的改变。 如果jQuery没有加载,它会给出一个不同的错误。

链接地址: http://www.djcxy.com/p/10825.html

上一篇: What causes TypeError: undefined is not a function?

下一篇: Socket.IO client library slow loading