9

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?

为什么最近的查询不起作用?我认为最接近()遍历它在 DOM 树中的祖先。

4

1 回答 1

14

这是因为input[type="radio"]它不是 的父#abc元素,而是祖父元素的兄弟元素。

此外,根据 w3c<input>元素不能有子元素,不像<button>,即它不会“环绕” #abc

第一种方法有效,因为$('#abc').parent().parent().parent()指向顶部<div>;这样做.find("input[type='radio']")会发现单选按钮作为其子元素。

这也可以:

$('#abc').parent().parent().siblings('input[type="radio"]).length; // 1
于 2013-05-23T03:41:18.517 回答