jquery nearest()树遍历

时间:2011-03-31 05:33:35

标签: javascript jquery

我无法让jQuery正常工作。我有这个HTML结构:

<div class="hide"><!-- form --></div>
<div class="button-hide"><a href="#">Hide Form</a></div>
<div class="button-show"><a href="#">Show Form</a></div>

当点击'按钮显示'锚时,它应该隐藏它自己的div,显示上面的'button-hide'div并切换上面的'hide'div:

$(document).ready(function(){

$(".hide").hide();
$(".button-hide").hide();

$("div.button-show a").click(function(){
    $(this).closest("div.hide").slideToggle();
    $(this).closest("div.button-hide").show();
    $(this).hide();
});
});

这对我没有用,我在这里错误地使用'nearest()'命令吗?

3 个答案:

答案 0 :(得分:3)

与其他人略有不同......

$(".button-show a").click(function(){
  $(this).parent().siblings(".button-hide").show();
  ...
});

答案 1 :(得分:0)

您在链接上最接近匹配而不是父div。应该是.parent()。nearest()

答案 2 :(得分:0)

是的,最亲近的就像父母一样遍历祖先()。它上面的div不是祖先,而是兄弟姐妹(看看亚历克斯的回答)。如果你有这些div的容器div,最好只使用它作为这样的参考:

<div class="parent-container">
  <div class="hide"><!-- form --></div>
  <div class="button-hide"><a href="#">Hide Form</a></div>
  <div class="button-show"><a href="#">Show Form</a></div>
</div>

然后在你的jquery

$(".button-show a").click(function(){
  $(this).parents(".parent-container").find(".button-hide").show();
  etc
})