removeClass不起作用

时间:2013-01-22 13:54:44

标签: click removeclass

这是我的剧本:

$(document).ready(function(){
    $(".slideToggle").click(function(e) {   
       e.preventDefault();
       $(".top-menu li").removeClass("active");
       var $more = $("#impressum").slideToggle("slow");
       $("body,html").animate({
           scrollTop: $more.offset().top
    }, {
        duration: 1100,
        queue: false
    })
    });
});

当我使用类slideToggle单击锚点时,它会打开imprint div。 到现在为止还挺好。 但事件$(".top-menu li").removeClass("active");未执行。我不知道为什么。 一旦我删除了slideToggle功能,上面的事件就会起作用。但我无法在点击功能上结合这两个事件。

你能帮忙吗? 提前谢谢!

编辑: 看起来脚本正在与我正在使用的另一个脚本冲突:

$(document).ready(function() {
$("a.anchorLink").anchorAnimate()
// Cache selectors
var topMenu = $(".top-menu"),
    topMenuHeight = topMenu.outerHeight()+15,
    // All list items
    menuItems = topMenu.find("a.anchorLink"),
    // Anchors corresponding to menu items
    scrollItems = menuItems.map(function(){
      var item = $($(this).attr("href"));
      if (item.length) { return item; }
    });

// Bind to scroll
$(window).scroll(function(){
   // Get container scroll position
   var fromTop = $(this).scrollTop()+topMenuHeight;

   // Get id of current scroll item
   var cur = scrollItems.map(function(){
     if ($(this).offset().top < fromTop)
       return this;
   });
   // Get the id of the current element
   cur = cur[cur.length-1];
   var id = cur && cur.length ? cur[0].id : "";
   // Set/remove active class
   menuItems
     .parent().removeClass("active")
     .end().filter("[href=#"+id+"]").parent().addClass("active");
});
});

因为如果删除此脚本,则其他脚本可以正常工作。 错误在哪里?

2 个答案:

答案 0 :(得分:0)

首先变量var $more =会做什么? 我认为这对于这个函数来说是多余的,这个变量永远不会在任何地方用户。

也许你可以发布整个代码。

Grtz, 沃特

答案 1 :(得分:0)

您使用的是什么版本的jquery?
我制作了一个小提琴并且你的代码正常工作(我正在用firebug观看li元素,并且“active”类正确地消失了)

http://jsfiddle.net/FKxyT/2/

您可以尝试更改removeClass的{​​{1}}。也许这很有效。