jquery - removeClass 不适用于两个元素

标签 jquery html css removeclass

我有一个像这样的嵌套无序列表:

<ul class="nav-list">
            <li id="about"><a href="/"  class="active">About</a></li>
            <li id="categories" class="hide"><a id="parent" href="../" >Projects</a>
                <ul class="child">
                    <li><a href="/kalaja">Hotel Kalaja</a></li>
                    <li><a href="/alfer">Alfer</a></li>
                    <li><a href="/xani">Xani Triko</a></li>
                    <li><a href="/leka">Leka Gas</a></li>
                    <li><a href="/tuni">Tuni Plast</a></li>
                    <li><a href="/visari">Visari AM</a></li>
                </ul>
                </li>
            <li id="personal" class="hide"><a href="#" id="parent">Personal</a>
                <ul class="child">
                    <li><a href="/film">Film</a></li>
                    <li><a href="/glitch">Glitch</a></li>
                </ul>
            </li>
        </ul>

CSS 设置为隐藏子列表

li {
max-height: 115px;
overflow: hidden;
transition: max-height 0.4s;
}
.hide { max-height: 15px;}

然后 jquery 从父类中删除 .hide 类,这样子列表就可以可见了

$('#parent').mouseover(function() {
    $(this).parent().removeClass('hide');
    $(this).addClass('active');
});
$('#parent').mouseout(function() {
    $(this).removeClass('active');
});

问题是代码适用于第一个 <li>categories id,但不适用于 <li>personal编号。

最佳答案

在 DOM 中不能有具有相同值的 id。因此,您需要更改为类才能使其工作:

HTML:

<ul class="nav-list">
    <li id="about"><a href="/"  class="active">About</a></li>
    <li id="categories" class="hide"><a class="parent" href="../" >Projects</a> <!-- note the class instead of id -->
        <ul class="child">
            <li><a href="/kalaja">Hotel Kalaja</a></li>
            <li><a href="/alfer">Alfer</a></li>
            <li><a href="/xani">Xani Triko</a></li>
            <li><a href="/leka">Leka Gas</a></li>
            <li><a href="/tuni">Tuni Plast</a></li>
            <li><a href="/visari">Visari AM</a></li>
        </ul>
    </li>
    <li id="personal" class="hide"><a href="#" class="parent">Personal</a>  <!-- note the class instead of id -->
        <ul class="child">
            <li><a href="/film">Film</a></li>
            <li><a href="/glitch">Glitch</a></li>
        </ul>
    </li>
</ul>

jQuery:

$('.parent').mouseover(function() { // note the . instead of #
    $(this).parent().removeClass('hide');
    $(this).addClass('active');
});
$('.parent').mouseout(function() { // note the . instead of #
    $(this).removeClass('active');
});

关于jquery - removeClass 不适用于两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32978268/

相关文章:

javascript - 使用父标签的样式属性附加新标签

javascript - div逐渐淡出一边

javascript - 如何在两个窗口之间同步滚动

html - 悬停在元素上时从上一个/下一个元素中删除样式

javascript - 如何在sql脚本中为表行设置类属性

javascript - 如何在 Android 4.3 及更早版本上隐藏 HTML 元素

javascript - iframe 的自动高度

html - 具有特殊按键事件的元素的 ARIA 处理

css - 内容 div 水平居中且高度为 100% 的粘性页脚情况

javascript 按钮 当选择某个值时,如何从所有按钮中删除一个类?