首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS & jQuery没有正确更新吗?

CSS & jQuery没有正确更新吗?
EN

Stack Overflow用户
提问于 2012-09-13 09:20:43
回答 1查看 365关注 0票数 0

我正在尝试使用div创建一个菜单,但是由于某些原因,我无法达到我想要的效果。我想要更改悬停时菜单项的背景,但也要将菜单上的另一个div更改为另一个div。到目前为止,我可以让悬停和选择工作,但是一旦我选择了另一个元素,所选的元素就不会改变其样式,除非我首先将鼠标悬停在它上面。

我的JS:

代码语言:javascript
复制
$(document).ready(function () {

    $(".collapsebar").click(function () {
        $("#body").toggleClass("use-appmenu");
    });

    $(".appmenu-item").click(function () {
        $(".appmenu-accent-selected").removeClass("appmenu-accent-selected").addClass("appmenu-accent");
        $(this).find(".appmenu-accent").removeClass("appmenu-accent").addClass("appmenu-accent-selected");
    });

    $(".appmenu-item").hover(function () {
        $(this).addClass("appmenu-item-hover");
        $(this).find(".appmenu-accent").removeClass("appmenu-accent").addClass("appmenu-item-item1-accent");
    },
    function () {
        $(this).removeClass("appmenu-item-hover");
        $(this).find(".appmenu-item-item1-accent").removeClass("appmenu-item-item1-accent").addClass("appmenu-accent");
    });
});

我的HTML:

代码语言:javascript
复制
<div class="appmenu-item appmenu-item-item1">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 1</div>
    <div style="clear: both;"></div>
</div>
<div class="appmenu-item appmenu-item-item2">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 2</div>
    <div style="clear: both;"></div>
</div>
<div class="appmenu-item appmenu-item-item3">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 3</div>
    <div style="clear: both;"></div>
</div>
<div class="appmenu-item appmenu-item-item4">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 4</div>
    <div style="clear: both;"></div>
</div>
<div class="appmenu-item appmenu-item-item5">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 5</div>
    <div style="clear: both;"></div>
</div>
<div class="appmenu-item appmenu-item-item6">
    <div class="appmenu-accent float-left"></div>
    <div class="appmenu-text float-left">Item 6</div>
    <div style="clear: both;"></div>
</div>

我的CSS:

代码语言:javascript
复制
.appmenu-item
{
    cursor: pointer;
}

div.appmenu-item-item1-accent
{
    width: 4px;
    height: 40px;
    background-color: #FF0000;
}

div.appmenu-accent
{
    width: 4px;
    height: 40px;
    background-color: #F26D47;
}

基本上,我有一个带有文本和颜色的矩形,当未选中或悬停在矩形上时,左侧的重音是灰色的,如果悬停在重音更改颜色上,而当选中时,该项目保持该颜色,当另一个项目被选中时,先前选择的项目只是灰色,而新项目具有颜色重音。我希望这是有意义的。任何帮助都将不胜感激。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-13 10:22:22

单击处理程序中的这一行不起作用主要有两个原因:

代码语言:javascript
复制
$(this).find(".appmenu-accent").removeClass("appmenu-accent")
                               .addClass("appmenu-accent-selected");

  1. 您添加的类appmenu-accent-selected没有出现在您的.hover()中,因此找不到任何元素,因为在您的appmenu-accent处理程序中,您实际上删除了appmenu-accent类(很明显,您正在单击的项就是您悬停在其上的项)。

因此,很明显,您可以通过将类添加到CSS来修复(1)点。我对固定点(2)的建议是永远不要删除appmenu-accent类,但要确保它出现在样式表中的appmenu-accent-selectedappmenu-item-item1-accent类之前,这样它的优先级就会低于它们。然后,您可以稍微简化代码:

代码语言:javascript
复制
$(".appmenu-item").click(function () {
    $(".appmenu-accent-selected").removeClass("appmenu-accent-selected");
    $(this).find(".appmenu-accent").addClass("appmenu-accent-selected");
});

$(".appmenu-item").hover(function () {
    $(this).addClass("appmenu-item-hover");
    $(this).find(".appmenu-accent").addClass("appmenu-item-item1-accent");
},
function () {
    $(this).removeClass("appmenu-item-hover");
    $(this).find(".appmenu-item-item1-accent").removeClass("appmenu-item-item1-accent");
});

演示:http://jsfiddle.net/NVa3d/1/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12398191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档