Javascript 具有多个元素(包括AND运算符)的jQuery选择器
如何将不同元素的Javascript 具有多个元素(包括AND运算符)的jQuery选择器,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,如何将不同元素的和运算符添加到此jQuery选择器 $("h1:contains('Elements') && p:contains('Black')").nextAll().find(".button[name='commit']").each(function(i, that){ $('[name=size] option').filter(function() { return ($(this).text() ==
和运算符添加到此jQuery选择器
$("h1:contains('Elements') && p:contains('Black')").nextAll().find(".button[name='commit']").each(function(i, that){
$('[name=size] option').filter(function() {
return ($(this).text() == 'Small');
}).prop('selected', true);
setTimeout(function(){
$(that).click();
}, 200*i);
});
此功能由按钮触发。我希望这个函数检查div中的h1是否包含文本元素,以及h1旁边的p是否包含黑色元素。我知道如何使用OR运算符,它只是一个逗号,但我正在尝试实现AND运算符
我也可以把它改成if语句,但我不知道怎么做
如果第一个选择器和第二个选择器返回true,请找到按钮[name='commit'],执行筛选函数,然后单击
摘要
白色的
元素
黑色的
来自您的评论(可能会被清理):
我希望此函数检查div
中的h1
是否包含文本元素,以及h1
旁边的p
是否包含黑色元素
结合您的第一个JavaScript块,您需要的是:
$("h1:contains('Elements') + p:contains('Black')").nextAll("div").find(".button[name='commit']")...
细分:
$(“h1:contains('Elements')+p:contains('Black')”
使用(+
)仅匹配包含元素的h1
,如果它后面紧跟着包含黑色的p
)
.nextAll(“div”)
查找以下所有同级div
元素
.find(“.button[name='commit']”)查找那些div中具有类按钮和名称的所有元素
实时示例(半秒钟后将相关按钮变成蓝色;我为代码片段添加了type=“button”
和value=“commit”
):
setTimeout(函数(){
$($h1:contains('Elements')+p:contains('Black')).nextAll(“div”).find(“.button[name='commit']).css({
颜色:“蓝色”,
fontWeight:“粗体”
});
}, 500);代码>
摘要
白色的
元素
黑色的
是的,很抱歉,我忘了在结构中添加class=“button”。@xSketchy0:现在我知道了整个结构,我已经能够显著简化答案了。:-)是的,谢谢!这就是我要找的。我不知道你需要整个结构来解决这个问题。相邻的兄弟组合符会与AND运算符进行比较吗?比如,它在某种程度上是否与AND运算符的工作方式相同?如果p后面没有紧跟着p,您会如何表达选择器?@xSketchy0:所有复合CSS选择器都是AND。例如,h1:contains(…)
是AND:任何匹配元素都必须是h1
和contain…
p.bar
是AND:元素必须是p
并且具有类bar
。等等组合子是相同的。你是另一个:如果你跟随上面的链接并稍微向下滚动,你会发现还有一个“一般兄弟组合”(通常称为“以下兄弟组合”),~
:a~B
匹配a
,如果它后面有一个B
兄弟(不一定相邻)。
$("h1:contains('Elements') + p:contains('Black')").nextAll("div").find(".button[name='commit']")...