HTML
<div id="div1">
<img class="size" src="">
<input name="rdo" id="rdo" type="radio" value="1">
<div id="div2">
<label>radiobutton</label>
<div id="div3">
<a href="javascript:void(0)">link</a>
<input name="abc" id="abc" type="hidden" value="1">
</div>
</div>
</div>
jquery的
$('#abc').parent().parent().parent().find("input[type='radio']").length; //1
$('#abc').closest("input[type='radio']").length; //0 why?
为什么最近的查询不起作用?我认为nearest()遍历DOM树中的祖先。
答案 0 :(得分:13)
这是因为input[type="radio"]
不是#abc
的父亲,而是祖父母元素的兄弟。
此外,与<input>
不同,according to w3c,<button>
元素不能包含子元素,即它不会“缠绕”#abc
。
第一种方法有效,因为$('#abc').parent().parent().parent()
指向顶部<div>
;对.find("input[type='radio']")
进行操作会发现单选按钮是其子元素。
这也有效:
$('#abc').parent().parent().siblings('input[type="radio"]).length; // 1