我想点击页面上具有属性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--active
或li.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--active
和friend--active
)
感谢。
答案 0 :(得分:1)
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']");