遍历dom以查找包含类.disable的$(。更多)div

时间:2011-11-20 00:11:27

标签: jquery

我有这棵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类来得到.more的“id”(我将如何有效地遍历它是我要问的因为我是尝试将此id存储在var badge_id中)

4 个答案:

答案 0 :(得分:1)

如果<li class="badge_listtwo">始终是您可以做的父母

var test = $('.disable').closest('li.badge_listtwo').find('.more').attr('id');

答案 1 :(得分:1)

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

你也可以使用Shef建议的“:has”选择器。

答案 2 :(得分:0)

如果它是单个元素,则会执行以下操作:

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

如果您需要array个ID,这就是解决方案:

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

如果您要查找amore个元素的ID,其中li的{​​{1}}元素包含a个类,那么这将是选择器:

disable

答案 3 :(得分:0)

也许这对性能来说是个好主意

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

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

alert('not found');  
}