[英]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') );
});
我真的不知道這是不是你想要的。 很難說。
value
和this
指向迭代中的當前項,但這不是您的問題。 您的問題是[]在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對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.