http://jsfiddle.net/3Bvt9/3/
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树中的祖先.
解决方法
这是因为input [type =“radio”]不是#abc的父级,而是祖父级元素的兄弟.
此外,according to w3c,< input>与< button>不同,元素不能包含子元素,即它不会“包裹”#abc.
第一种方法有效,因为$(‘#abc’).parent().parent().parent()指向顶部< div> ;;在其上执行.find(“input [type ='radio']”)将找到单选按钮作为其子元素. 这也有效:
$('#abc').parent().parent().siblings('input[type="radio"]).length; // 1