Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 遍历dom以查找包含class.disable的div的$(.more)_Jquery - Fatal编程技术网

Jquery 遍历dom以查找包含class.disable的div的$(.more)

Jquery 遍历dom以查找包含class.disable的div的$(.more),jquery,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" />

我有一个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>
  • $badge\u title


  • 我想知道如何使用jquery获得的“id”。更多信息基于查找哪个
  • 包含.disable类(我要问的是如何有效地遍历它,因为我试图将此id存储在var badge_id中)

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

    var badge_id = $('li.disable .more').attr('id');
    
    如果您需要ID的
    数组
    ,以下是解决方案:

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

    如果您在
    li
    中查找
    a
    元素id,该元素具有类
    more
    ,该元素具有类
    disable
    a
    元素,则这将是选择器:

    var badge_id = $('li:has("a.disable")').find('a.more').attr('id');
    
    如果
  • 始终是您可以做的家长

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

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

    也许这是一个提高性能的好主意

    var lifinder = $('li').find('a.more')
    var badge_id = lifinder.attr('id');
    
    if (badge_id != undefined) {
    alert(badge_id);
    }
    else {
    
    alert('not found');  
    }
    

    我认为这将选择li类=禁用…而不是元素(在本例中为a)是否包含类=disable@PraneetSharma您是否正在查找既有
    更多
    类又有
    禁用
    类的
    a
    元素?或者
    a
    元素在
    li
    中具有类
    更多
    a
    元素,该元素具有类
    禁用
    ?我在第二个解决方案的答案中添加了第二部分。@Shef阅读了HTML。。。它是一个包含.more和.disable元素的li
    var lifinder = $('li').find('a.more')
    var badge_id = lifinder.attr('id');
    
    if (badge_id != undefined) {
    alert(badge_id);
    }
    else {
    
    alert('not found');  
    }