无法调用方法'查找'的未定义
Cannot call method 'find' of undefined
我正在尝试使用jQuery代码中的对象。
我几乎有这个:
var opts = {
ul: $(this).find('.carousel'),
li: ul.find('li')
}
li
属性给出错误Cannot call method 'find' of undefined
如何修复?
无论选择器是什么,在声明对象时都不能访问该对象的属性。
为什么要声明ul
?您正在opts
对象上创建属性ul
。
丑陋:
你可能想要的是:
var opts = {
ul: $(this).find('.carousel')
}
opts.li = opts.ul.find('li');
但如果你实际上不需要引用这两个组,那么:
清洁剂:
var opts = {
li: $(this).find('.carousel li')
}
也一样好。
最清洁:
你也可以做:
var $carousel = $(this).find('.carousel');
var options = {
carousel: $carousel,
carouselItems: $carousel.find('li')
}
太可怕了,但你要求它:
var CarouselOptions = (function () {
var options = function (carousel) {
this.carousel = $(carousel);
this.carouselItems = this.carousel.find('li');
};
options.prototype.myOptionsFunction = function () {
// Don't know what you want your object to do, but you wanted a prototype...
};
return options;
})();
var opts = new CarouselOptions($(this).find('.carousel'));
此外
(注意this
是什么,假设页面上有多个.carousel
元素,而这里您想要的是事件目标内的元素。)
您的错误消息本质上是说$(this)
未定义(或者换句话说,jQuery找不到此元素)。因为除了您试图设置的单个对象之外,您没有任何代码,所以我不知道this
的实际值是多少。
我要做的是确保this
被设置为某种类型的元素。一个简单的console.log(this)
应该处理这个问题。如果this
不是HTML元素,那么这就是您的问题。要么确保您在jQuery事件函数中,如下所示:
$('#id').click(function() {
this === document.getElementById('id'); // true
});`
或者你可以直接放下$(this)
:
var opts = {};
opts.ul = $('.carousel'),
opts.li = opts.ul.find('li')
var that = $(this);
var opts = {
ul: that.find('.carousel'),
li: ul.find('li')
}
相关文章:
- 如何使用JavaScript查找未定义的CSS属性的值
- jQuery'查找'未定义
- 查找未定义值的所有对象
- TypeError:无法读取属性'查找'的未定义
- 查找任何未定义的变量并从url字符串中隐藏
- Expressjs Mongoose 查找嵌套的嵌入式文档未定义
- 与“未定义”进行比较是否仍会进行全局范围查找
- 在对象上定义 getter,以便所有未定义的属性查找都返回 “”
- 余烬未正确初始化存储:无法读取未定义的属性“查找”
- 错误“JavaScript 运行时错误:查找滚动位置时无法获取未定义或空引用的属性'scrollLeft'”
- EmberJS无法调用方法'查找'保存模型时未定义的
- 无法调用方法'查找'的未定义
- 在关联数组查找中未定义
- 在ReferenceError中查找未定义的变量名称字符串
- 是否可以使用jQuery来查找高度未定义的文本跨度的高度
- 查找并更改未定义值的属性
- DOM查找ID返回未定义
- 为什么是Lodash _.查找返回未定义的方法
- 在chrome中查找具有未定义值的元素
- Angular Undercore无法读取属性'查找'的未定义