Jquery最接近 - 我在这里做错了什么?

时间:2014-04-26 04:46:50

标签: jquery closest

当点击expDelBtn(最后一个锚点div)中的锚点时,我试图获取cont1 div的id

<div id="tester" class="wrapper>">
    <div id="sf_129" class="cont1">
        <div class="cont2">
            <div class="nameCont"><table><tbody><tr><td>Shaun Thomson</td></tr></tbody></table></div>
            <div class="sexCont">Male</div>
        </div>
        <div class="btnCont">
            <div class="expFold"><a href="#">▲</a></div>
        </div>
        <div style="display: block;" class="exCont">
            <div class="exDel"><a href="#">X</a></div>
            <div class="exMov"><a href="#">MOVE</a></div>
            <div class="exPay"><a href="#">PAY</a></div>
        </div>
    </div>
    <div class="exp1">
        <div id="ro_129" class="exp2">
            <div class="exp3">
                <div class="expMsg">Hello there</div>
            </div>
            <div id="ex_267" class="expBtnCont">
                <div class="expUpBtn"><a href="#">↑</a></div>
                <div class="expDownBtn"><a href="#">↓</a></div>
                <div class="expDelBtn"><a href="#">X</a></div>
            </div>
        </div>
    </div> 
</div>

在我的expDelBtn点击功能中,我有

alert($(this).closest(".cont1").attr("id"));

在警报中没有显示任何内容。

如果我这样做

alert($(this).closest(".wrapper").attr("id"));

它显示&#34; tester&#34;。

你能用什么来获得&#34; cont1&#34; ID?为什么最近没有呢?是因为cont1 div离开了DOM树的不同分支吗?

感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:3)

因为cont1不是按钮的祖先

这是最近的.exp1元素

的前一个兄弟
alert($(this).closest(".exp1").prev('.cont1').attr("id"));

或者你可以说,你需要最近cont1内的wrapper元素(你在类名包装器中有一个> ...删除它)

alert($(this).closest(".wrapper").children('.cont1').attr("id"));

演示:Fiddle