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']")...