Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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
Javascript h1的jQuery选择器包含两个按钮_Javascript_Jquery_Html_Jquery Selectors - Fatal编程技术网

Javascript h1的jQuery选择器包含两个按钮

Javascript h1的jQuery选择器包含两个按钮,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,我试图构造一个jQuery选择器来选择包含某个单词的h1,然后找到伴随着h1的按钮 这是我无法更改的HTML结构 <div class="item1"> <h1>Title</h1> <div id="cctrl"> <form> <input> <input> <fieldset> <input class="bu

我试图构造一个jQuery选择器来选择包含某个单词的h1,然后找到伴随着h1的按钮

这是我无法更改的HTML结构

<div class="item1">
<h1>Title</h1>
<div id="cctrl">
    <form>
        <input>
        <input>
        <fieldset>
            <input class="button" type="submit" value="submit">
        </fieldset>
    </form>
</div>

如果存在更多标题为“John”的按钮,我希望每个方法都单击所有按钮。但是我的jQuery没有按照我希望的方式工作,我现在被卡住了。有人知道如何解决这个问题吗?

您的
输入
不是
h1
的子项,因此请使用而不是
来选择包含输入的div,然后在每个div中使用
find()
方法。请记住将
cctrl
id
更改为
class
,以便您可以使用
div.cctrl
,或者如果您不打算只使用
+div

$("h1:contains('John') + div.cctrl").each(function(){
    $(this).find(".button[value='submit']").click();
});
或者更简单,您不需要
每个
功能:

$("h1:contains('John') + div.cctrl").find(".button[value='submit']").addClass("blue");
$(“h1:contains('John')+div.cctrl”).find(.button[value='submit']).addClass(“blue”)
.blue{
背景颜色:蓝色;
}

标题
约翰
标题
约翰

您需要使用
.next()
到达
H1
之后的
DIV
,然后使用
find()
在其中搜索

$(“.button”)。单击(函数(e){
e、 预防默认值();
console.log(this.id);
});
$(“h1:contains(John)”).next().find(“.button[value=submit]”)。单击()

标题
约翰·史密斯
标题
棒约翰

属性提供类时,不应包含点。(
class=“.button”
应该是
class=“button”
)为什么不添加数据属性并基于此进行搜索您的选择器希望按钮是h1的子项。它不在您的标记中。@George哦,是的,谢谢,这只是文章中的一种类型。好吧,如果我有两个包含John Doe和John Day的div项,我可以找到带有:$(“h1:contains('John')”)的h1。每个(function(){console.log(this);});这将显示存在的两个H1,但如果我将“+div.cctrl”添加到选择器并尝试使用.find()查找按钮,它将不会返回任何内容。你知道为什么吗?它只是说[prevObject:init(1),context:document,selector:“h1:contains('John')+div.cctrl”]也不应该是+div#cctrl,因为它是一个id而不是一个类?在代码段中,您在item1中添加了多个cctrl div。在我的代码中应该有多个item div,每个item div都有一个h1和cctrldiv@xSketchy0
item1
DIV与答案无关。请看,它可以工作,但它只对找到的第一个按钮有效,如果有多个H1中的名称为John,它不会触发所有按钮。它应该找到所有按钮。但是,如果单击“提交”按钮可以提交表单,那么您一次只能提交一个表单。我添加了一个代码片段,显示它会触发其中包含
John
标题后的所有按钮。
$("h1:contains('John') + div.cctrl").find(".button[value='submit']").addClass("blue");