全部, 我有一些我正在尝试调试的代码,我在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”
有谁能让我知道我会得到这些错误的其他原因?如果我有一个冲突的脚本或类似的东西,我怎么能找出冲突的位置?
谢谢!
答案 0 :(得分:3)
根据jQuery API,如果匹配的元素没有与该键匹配的任何数据,则.data( key )
方法返回undefined。看看它的用法http://api.jquery.com/data/。它在任何情况下都只对匹配集中的第一个元素进行操作,因此您无法使用它来获取点击事件处理程序的数组。原样,它说第一个匹配的元素没有数据属性“events”。获得附加的数据后,执行
var clickEvents = [];
$( selector ).data( key ).each( function() {
clickEvents.push( $(this).click );
});
收集点击事件。
答案 1 :(得分:0)
当您尝试执行未初始化或未正确初始化的函数时,会出现该错误。
答案 2 :(得分:0)
jQuery('ul.breadcrumb[data-allownextonly]').data("events")
似乎undefined
,因此任何解除引用都会引发错误。
顺便说一句,将$
更改为jQuery
在您的代码中不会有太大变化。如果没有加载jQuery,它会产生不同的错误。