Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery更改活动类图标的状态_Jquery_Html_Css - Fatal编程技术网

jQuery更改活动类图标的状态

jQuery更改活动类图标的状态,jquery,html,css,Jquery,Html,Css,我正在尝试使用下拉列表中的图标创建活动状态。基本上,当li处于非活动状态时,它应该同时显示+图标,然后在li处于活动状态时显示-图标,反之亦然 JsFiddle 非常感谢您的帮助。我在这里修改了您的JFIDLE: 在click事件中,总是在removeClass方法之后直接触发activeClass方法。我将它们移动到if语句中,如下所示: if ($(this).next().is(":visible")) { $(this).next().slideUp(); $(this

我正在尝试使用下拉列表中的图标创建活动状态。基本上,当li处于非活动状态时,它应该同时显示+图标,然后在li处于活动状态时显示-图标,反之亦然

JsFiddle


非常感谢您的帮助。

我在这里修改了您的JFIDLE:

在click事件中,总是在removeClass方法之后直接触发activeClass方法。我将它们移动到if语句中,如下所示:

if ($(this).next().is(":visible")) {
    $(this).next().slideUp();
    $(this).removeClass('active');
} else {
    $(this).next().slideToggle();
    $('#cssmenu li a').addClass('active');
}

在click事件处理程序中,您可以执行一些操作。您可以检查菜单当前是否正在使用
:animated
jQuery选择器设置动画,和/或您可以
stop()
任何正在进行的动画。在我的示例中,我选择忽略已设置动画的单击。其次,由于动画的原因,当快速单击按钮时,
:visible
选择器可能会给出一些错误的肯定/否定,因此您应该提示其他内容,例如活动类:

$('#cssmenu > li > a').click(function () {
    var $a = $(this),
        $ul = $a.next(),
        navIndex = $('#cssmenu > li > a').index(this);

    if ($ul.is(':animated'))
        return;

    $.cookie("nav-item", navIndex);
    $('#cssmenu li a.active').not(this).removeClass('active').next().stop().slideUp();

    $ul.stop().slideToggle();
    $a.toggleClass('active');

});

Fiddle:

所以当“活动”类崩溃时,您需要帮助来移除它吗?谢谢您的回复。工作完美。还有一个问题。如果我从谷歌进入定价页面(在线预订下),我怎么能在定价页面处于活动状态时打开列表?目前,它在正常浏览站点并添加活动类时工作,但如果用户要从google访问此页面,则需要知道它位于此页面上,并打开列表…它将非常类似于您的checkCookie功能。只会检查
window.location.search
window.location.hash
或您希望发送数据的方式,而不是检查cookie。如果此检查通过,您可以将cookie设置为匹配,然后让您的checkCookie发挥作用。嘿@malk再次感谢。这会是一个复制我已经拥有的当前cookie函数的问题吗?
$('#cssmenu > li > a').click(function () {
    var $a = $(this),
        $ul = $a.next(),
        navIndex = $('#cssmenu > li > a').index(this);

    if ($ul.is(':animated'))
        return;

    $.cookie("nav-item", navIndex);
    $('#cssmenu li a.active').not(this).removeClass('active').next().stop().slideUp();

    $ul.stop().slideToggle();
    $a.toggleClass('active');

});