我有一个关于按下按钮后使用切换功能的问题。我有以下jQuery代码:
$(function () {
$('.navigation').click(function () {
$(".expand, .collapse").toggle();
});
});
这与以下HTML完美结合:
<div class="container">
<div class="title">
<div class="navigation">
<span class="expand">
expand
</span>
<span class="collapse">
collapse
</span>
</div>
</div>
</div>
但每当我有这种HTML格式时:
<div class="container">
<div class="title">
<div class="navigation">
<span class="expand">
expand
</span>
<span class="collapse">
collapse
</span>
</div>
</div>
</div>
<div class="container">
<div class="title">
<div class="navigation">
<span class="expand">
expand
</span>
<span class="collapse">
collapse
</span>
</div>
</div>
</div>
切换应用于两个容器,这是合乎逻辑但不需要的。我怎么能只触发按下的导航按钮的兄弟姐妹?
我尝试过类似的事情:
$(this).next(".expand, .collapse").toggle();
但这不起作用。任何帮助表示赞赏!
答案 0 :(得分:2)
你有正确的想法;您需要使用this
关键字来引用引发事件的元素并找到它相关的.expand
和.collapse
元素,但是next()
查找兄弟元素,而元素则是需要检索儿童,因此您需要使用find()
:
$(function () {
$('.navigation').click(function () {
$(this).find(".expand, .collapse").toggle();
});
});
答案 1 :(得分:2)
使用find()
,如下所示。
$(this).find(".expand, .collapse").toggle();
答案 2 :(得分:1)
你快到了! find()是你的朋友。当与$(this)结合使用时,它将搜索符合您条件的子节点。
$(function () {
$('.navigation').click(function () {
$(this).find(".expand, .collapse").toggle();
});
});
答案 3 :(得分:1)
$(".expand, .collapse").toggle();
这会将toggle
应用于包含expand
和collapse
类的所有元素,而不管您点击的.navigation
div。
更改为
$(this).find(".expand, .collapse").toggle();
您可以阅读$(this)
here。
答案 4 :(得分:1)
您必须指定这些类的容器div,您只需使用$(".expand, .collapse", $(this))
:
$(function() {
$('.navigation').click(function() {
$(".expand, .collapse", $(this)).toggle();
});
});
&#13;
.navigation {
min-width: 30px;
min-height: 20px;
background: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="title">
<div class="navigation">
<span class="expand">
expand
</span>
<span class="collapse">
collapse
</span>
</div>
</div>
</div>
<div class="container">
<div class="title">
<div class="navigation">
<span class="expand">
expand
</span>
<span class="collapse">
collapse
</span>
</div>
</div>
</div>
&#13;
答案 5 :(得分:0)
嘿试图研究你的问题,并得到了这个有用的链接https://api.jquery.com/siblings/。您可以按如下方式使用它:
$(this).siblings(".expand, .collapse").toggle();