2011-06-06 18 views
4

獲得下一個元素我有一些元素,比如使用jQuery/JS

<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

所以,你想後,立即進行檢查'特殊text'的複選框? – lonesomeday 2011-06-06 09:20:23

+0

是的。我希望在特殊文本後檢查所有複選框。 – jq5 2011-06-06 09:21:30

+0

如果'nextAll'對你來說還不夠:http://stackoverflow.com/a/30089307/274502 – cregox 2015-05-06 23:24:59

回答

4

nextAllfind應該這樣做:

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

另外,你MI GHT考慮限制搜索只用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

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/

+0

只能找到下一個段落。他使用'nextAll'(以及他在問題文本中使用複數形式)表明他想要所有這些。 – 2011-06-06 09:23:58

+0

@ T.J.Crowder是的,我注意到了。已經更新了代碼。 – Niklas 2011-06-06 09:24:37