2011-11-20 36 views
0

我有這樣的DOM樹(更多):

<li class="badge_listtwo"> 
    <div class="badge_spacetwo"> 
     <p class="badge_title">$badge_title</p> 
     <div class="badge_button"> 
      <img src="badgeImages/sample.png" /> 
      <a href="#" id="$badge_id" class="more">More</a> 
     </div> 
    </div> 
    <div class="badge_button"> 
     <a href="#" class="disable">Disable</a> 
    </div> 
</li> 

我不知道如何,使用jQuery,我可以得到更多的「身份證」基於發現其<li>包含.disable類(我怎麼會遍歷它有效地是林問,因爲我想存儲在VAR badge_id這個ID)

回答

0

如果它是一個單一的元素,這會做:

var badge_id = $('li.disable .more').attr('id'); 

如果你需要id的array,這是解決方案:

var badge_ids = $('li.disable .more').map(function(){ 
    return this.id; 
}).get(); 

如果你是一個li它有一個a元素與類內與類more尋找a元素的ID disable,那麼這將是選擇:

var badge_id = $('li:has("a.disable")').find('a.more').attr('id'); 
+1

一個好主意,我認爲,如果李類=禁用......不是還判定是否一個元素(在這種情況下)含有類=禁用 – re1man

+0

@PraneetSharma這將選擇你是否在尋找'a''元素同時擁有'more'和'disable'類?或者'''''裏面有一個'a'元素,裏面有''''元素,'''元素'類'禁用'?我在第二個解決方案的答案中增加了第二部分。 – Shef

+0

@Shef閱讀HTML ...這是一個li,它包含_more和.disable元素 – tobyodavies

1

如果<li class="badge_listtwo">始終是家長,你可以做

var test = $('.disable').closest('li.badge_listtwo').find('.more').attr('id'); 
1
var badge_id = $("li").filter(function() { 
    return $(this).find(".disable").length; 
}).first().find(".more").attr("id"); 

您也可以使用 「:有」 選擇爲SHEF建議。

0

也許它可以爲性能

var lifinder = $('li').find('a.more') 
var badge_id = lifinder.attr('id'); 

if (badge_id != undefined) { 
alert(badge_id); 
} 
else { 

alert('not found'); 
}