我有一些像
这样的元素<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)
}
感谢您的时间和帮助。
答案 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)
}
另外,您可以考虑将搜索限制为仅使用jQuery的自定义:checkbox
选择器复选框:
var findText = $("#myDiv p:contains('special text')");
if(findText.length > 0) {
findText.nextAll("p").find(":checkbox").attr("checked",true)
// ^^^^^^^^^^^-- Change here
}
答案 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);