0

我有一个包含一堆切换的菜单。每个项目切换不同的东西。

我正在尝试制作一个整体“重置”按钮,将一些东西重置为一些默认设置。我需要检测菜单项是否被切换,如果是,则在该特定项上执行一些代码,如果没有,则不执行任何操作。打开一个项目,它会获得一个 CSS 背景颜色,如下所示,所以我想出了以下重置代码:

$('#app-menu ul.dynamic-items li ul li').toggle(function () {
    $(this).css({background: "#4c581e"});
}, function () {
    $(this).css({background: "none"});
});

/* Reset Button */

$(".reset").click(function() {
    if( $('#app-menu ul.dynamic-items li').css({background: "#4c581e"}) != null )  { 
        $(this).click(); /* If the item has the background code mentioned above, it is toggled on, therefore this "click" should reset its state */
    } 
    else { 
    // do nothing //
    };
});

基本上我想说的是,如果菜单项具有#4c581e 背景,这意味着它已打开,因此应该“单击”以再次将其关闭。

问题是,它不起作用。我对 jQuery 相当陌生,所以我认为我做错了什么。

有什么想法吗?

编辑:我只想注意菜单项实际上会在页面上切换 DIV 元素,因此它不仅仅是重置菜单项的 css 样式的问题。这就是为什么如果检测到特定的 CSS 属性,我试图让它“单击”该项目,因为“单击”它基本上会再次将其关闭。

4

1 回答 1

2

1.

$(this).css("background-color")将返回该值,但它可能是一个 rgb 值。

=> RGB(255, 255, 255)

所以要么比较 rgb 值,要么使用一些转换工具。

http://www.jquery4u.com/jquery-functions/jquery-convert-rgb-hex-color/

2.

您可能只想使用 css 类,并切换类。然后,“重置”按钮可以将所有默认类重新应用于元素,这在 IMO 上更加简洁。

$('#app-menu ul.dynamic-items li ul li').toggle(function () {
    $(this).toggleClass("active");
});
$(".reset").click(function() {
    $('#app-menu ul.dynamic-items li ul li').removeClass("active");
});

CSS可以是:

li.active {
  background-color: #4c581e;
  display: block;
}
于 2012-12-06T02:22:52.253 回答