簡體   English   中英

遍歷jQuery對象數組

[英]Iterating through a jQuery object array

我知道已經有人問過這個問題並回答了幾次,但是我仍然對在遍歷jQuery數組時如何引用當前對象感到困惑。 例如,以下代碼給我錯誤TypeError: genH3Array[i].next is not a function 引用當前數組對象的正確方法是什么?

var genH3Array = $('#Generation_II').parent();
    genH3Array.push($('#Generation_III').parent());;
    genH3Array.push($('#Generation_IV').parent())

$.each(genH3Array, function(i, value)
        {
            if(genH3Array[i].next().attr("align") == "center")
            {                   genH3Array[i].next().next().next().insertBefore(heading.next())
            }
            genH3Array[i].next().next().insertBefore(heading.next())
            genH3Array[i].next().insertBefore(heading.next())
        })

編輯:謝謝大家的幫助。 我知道這可能對你們大多數人來說都是小菜一碟,但這對我來說是一個重大的頭痛。 更正后的代碼如下:

var genH3Array = $('#Generation_II,#Generation_III,#Generation_IV').parent();

        $.each(genH3Array, function(i, value)
        {
            console.log($(this).next());

            if($(this).next().attr("align") == "center")
            {
                $(this).next().next().next().insertBefore(pokemonHeader.next())
            }
            $(this).next().next().insertBefore(pokemonHeader.next())
            $(this).next().insertBefore(pokemonHeader.next())
            $(this).insertBefore(pokemonHeader.next())
        })

這部分:

var genH3Array = $('#Generation_II').parent();
    genH3Array.push($('#Generation_III').parent());
    genH3Array.push($('#Generation_IV').parent());

...實際上不是對jQuery對象使用.push()的方法。 當您輸入.push()值時,它應該是DOM元素。 不是jQuery對象。

您可以像這樣簡化整個過程:

var genH3Array = $('#Generation_II,#Generation_III,#Generation_IV').parent();

現在,您將在對象中擁有所有這三個對象的.parent()

不能完全確定每個元素應該做什么,但是似乎您正在嘗試獲取每個元素的下三個元素,並將它們插入某個heading元素之后。

$.each(genH3Array, function(i, value) {
        if($(this).next().attr("align") == "center") {                    
            heading.after( $(this).nextUntil('sometarget:last') );
        }
        heading.after( $(this).nextUntil('sometarget') );
    });

我真的不知道這是不是你想要的。 很難說。

valuethis指向迭代中的當前項,但這不是您的問題。 您的問題是[]在jQuery對象上返回的項目不是 jQuery對象。 您可以這樣做:

$(genH3Array[i]).next() 

添加到@patrick dw所說的內容:獲得正確的選擇器后,可以使用以下語法:

var getH3Array = ('#Generation_II,#Generation_III,#Generation_IV').parent().each(function() {
    $(this); // this references the dom element matched, so:

    if($(this).next().attr("align") == "center") {
         // do something here
    }
});

我想你想要的是什么

var array = $("#c1, #c2, #c3").parent();
$.each(array, function(){
    console.log($(this).next());
});

$.each回調中, this變量指向當前元素。 如果要像遍歷一樣遍歷一個jquery數組,它將遍歷dom元素而不是jQuery對象,因此需要使用$(this)獲得與它們相對應的jQuery對象。

jQuery.each

暫無
暫無

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

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