2011-05-14 54 views
2

我想要使用.each循環來查找列表中的特定元素,當自定義屬性「pid」不等於0時,我可以執行一個操作。我怎樣才能找到每個元素?到目前爲止,我有:我如何才能找到具有等於特定值的自定義屬性的元素?

$.each($('.container ul li'),function() { 
    var pid = $('.container ul li').attr('pid'); 
    $(this).remove().after($("container ul li[pid='"+pid+"']")); 

    }); 

但這裏沒有做任何事情。任何人都可以請幫忙?

本質上我想要做的是將列表中的每個元素並將它們按屬性「pid」分組在一起,所以我在列表中搜索pid不等於0時的列表,然後我需要搜索它再次,並找到它的匹配,當每個pid相等時(注意:只會有一個匹配),並將其追加在第一個或原始之後。

+1

也許你需要'.container'? 'container'將匹配'container'元素。還要注意''('container ul li')。attr('pid');'總是會給你與'container ul li'匹配的第一個元素的'pid'。這是你想要的嗎?請提供更多細節。 – 2011-05-14 08:46:16

+0

我剛更新了它,希望這樣做更有意義。感謝您幫助btw。 – mcbeav 2011-05-14 08:54:57

回答

2

這將發現任何lipid不是0如果這是你想要的。然後它將開始按pid對這些項目進行分組。

var groups = []; 

$('.container ul li[pid][pid!="0"]').each(function(){ 
    var pid = this.getAttribute("pid"); 

    if(groups[pid]){ 
     groups[pid].push(this); 
    }else{ 
     groups[pid] = [this]; 
    } 
} 

此代碼將產生一個列表清單。您可以通過訪問groups[pid]訪問給定pid的所有物品,因此所有pid = 5的物品都將在groups[5]之內。

+0

是的,我需要找到任何李pid不等於0,但然後我需要再次搜索該列表,找到匹配的匹配。那有意義嗎? – mcbeav 2011-05-14 08:52:45

+0

感謝您的幫助!對此,我真的非常感激! – mcbeav 2011-05-14 09:20:48

相關問題