单击页面上的所有按钮,除非父级具有特定的类

时间:2014-09-29 08:59:17

标签: javascript jquery

我想点击页面上具有属性data-capture='noiseClicked'

的所有按钮

到目前为止,这是我的代码:

javascript: (function() {
    var followButtons = $("li.js-profile-card button[data-capture='noiseClicked']");
    var index = followButtons.length - 1;
    follow();

    function follow() {
        if (index >= 0) {
            $(followButtons[index--]).click();
            setTimeout(follow, 1);
        }
    }
})();

但是,我想要排除父级为li.noise--activeli.friend--active

的按钮

所以点击以下内容:

<li class="js-profile-card noise--active"><button data-capture="noiseClicked" type="button"></button></li>

但不会点击以下内容......

<li class="js-profile-card noise--active"><button data-capture="noiseClicked" type="button"></button></li>

<li class="js-profile-card friend--active"><button data-capture="noiseClicked" type="button"></button></li>

我认为jquery不是选择器在这里会有所帮助,但我不确定如何使用它来排除具有特定属性的父元素,我不知道如何排除两个不同的属性(noise--activefriend--active

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用parent&amp; hasClass方法:

var indexToSet = index--;
if( !$(followButtons[indexToSet]).parent().hasClass( 'noise--active' ) && !$(followButtons[indexToSet]).parent().hasClass( 'friend--active' )) {
    $(followButtons[indexToSet]).click();
 }

编辑:

更好地使用closest()方法在节点列表中前进:

var indexToSet = index--;
if( !$(followButtons[indexToSet]).closest( 'noise--active' ).length && !$(followButtons[indexToSet]).closest( 'friend--active' ).length ) {
    $(followButtons[indexToSet]).click();
 }

答案 1 :(得分:1)

:not选择器可能会派上用场:

var followButtons = $("li.js-profile-card:not(.noise--active,.friend--active) button[data-capture='noiseClicked']");