用jquery / js获取下一个元素

时间:2011-06-06 09:18:18

标签: javascript jquery

我有一些像

这样的元素
<div id="myDiv">
    <p><input type="checkbox" />text</p>
    <p>special text</p>
    <p><input type="checkbox" />text</p>
    <p><input type="checkbox" />text</p>
</div>

我的目的是检查“特殊文本”下方的输入框。 因此我创建了一个变量findText来查找“特殊文本”

var findText = $("#myDiv:contains('special text')");

我正在检查是否存在“特殊文本”,如果存在,我希望检查下一个输入元素。遗憾的是,.nextAll()只会得到以下兄弟姐妹。但是我该如何调用下一个元素呢?

 var findText = $("#myDiv:contains('special text')");

    if(findText.length > 0) {
      findText.nextAll("input").attr("checked",true)
    }

感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:4)

带有find

nextAll应该这样做:

findText.nextAll("p").find("input").attr("checked",true);

找到以下段落及其后代输入。 (如果输入保证是段落的直接子节点,则使用children而不是find。)

...但我认为findText的选择器不正确,请尝试:

var findText = $("#myDiv p:contains('special text')");
//                      ^^^---- change here

把所有这些放在一起:

var findText = $("#myDiv p:contains('special text')");

if(findText.length > 0) {
  findText.nextAll("p").find("input").attr("checked",true)
}

Live copy

另外,您可以考虑将搜索限制为仅使用jQuery的自定义:checkbox选择器复选框:

var findText = $("#myDiv p:contains('special text')");

if(findText.length > 0) {
  findText.nextAll("p").find(":checkbox").attr("checked",true)
  //                         ^^^^^^^^^^^-- Change here
}

Live copy

答案 1 :(得分:2)

你可以这样做:

$("#myDiv p:contains('special text')").next().children('input').prop('checked',true);

示例:http://jsfiddle.net/HVSyE/3/

编辑:如果您想要检查文本后的所有复选框,则:

$("#myDiv p:contains('special text')").nextAll('p').children('input').prop('checked',true);

示例:http://jsfiddle.net/HVSyE/4/