繁体   English   中英

jQuery最接近()树遍历

[英]jquery closest() tree traversal

我无法让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,显示上面的“按钮隐藏” div并切换上面的“隐藏” 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();
});
});

这些都不适合我,我在这里误用了“ closest()”命令吗?

与其他人有点不同...

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

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

是的,最接近的祖先像parents()一样遍历祖先。 它上方的div不是祖先,而是同级(请参阅alex的回答)。 如果您有一个用于这些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
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM