簡體   English   中英

無法調用未定義的方法“查找”

[英]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')
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM