【发布时间】:2018-09-13 14:40:32
【问题描述】:
我们需要能够根据当前悬停的元素隐藏和显示元素。我们在下面尝试了以下方法,但它没有添加 is-active 类并根据悬停的其他元素将其删除。
我们如何根据当前悬停的元素隐藏和显示元素?
目标(基于以下示例):
- 当您将鼠标悬停在
first下的some上时,使用is-active类显示<div class="two" id="some-link">some link</div> - 当您将鼠标悬停在
first下的path上时,<div class="two" id="some-link">some linke</div>不应显示(删除is-active类),<div class="two" id="path-link">path link</div>应显示(添加is-active类)
当前问题:
-
is-active悬停元素更改时不会删除类
$(function() {
$('li#two').hover( function() {
var el_two = $(this);
var el_id = el_two.attr('id');
var el_link = el_two.attr('data-at');
var el_sel = '#'+el_link+'.'+ el_id;
var el_parent = el_two.parent().parent();
el_parent.find('.is-active').removeClass('is-active');
$(el_sel).addClass('is-active');
});
});
.two {
display: none;
}
.is-active {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li id="one">
<a href="#"> first</a>
<div class="one">
<ul>
<li data-at="some-link" id="two">
<a href="#"> some</a>
</li>
<li data-at="path-link" id="two">
<a href="#"> path</a>
</li>
<li data-at="another-one" id="two">
<a href="#"> another one</a>
</li>
</ul>
<div class="dropdown">
<div class="two" id="some-link">some link text</div>
<div class="two" id="path-link">path link</div>
<div class="two" id="another-one">another one</div>
</div>
</div>
</li>
<li id="one">
<a href="#"> second</a>
<div class="one">
<ul>
<li>
<a href="#"> another some</a>
</li>
<li>
<a href="#"> another path</a>
</li>
</ul>
</div>
</li>
<li id="one">
<a href="#"> third</a>
<div class="one">
<ul>
<li>
<a href="#"> third some</a>
</li>
<li>
<a href="#"> third path</a>
</li>
</ul>
</div>
</li>
</ul>
【问题讨论】:
-
你的数据属性是
data-at而不是data-link:el_two.attr('data-link') -
@PatrickEvans 我确实修正了那个错字,但
is-active类仍未从前一个元素中删除。 -
试试this。
标签: javascript jquery html css