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