0

これは私のスクリプトです:

$(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でアンカーをクリックすると、インプリント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");
});
});

このスクリプトを削除すると、他のスクリプトが機能するためです。間違いはどこにありますか?

4

2 に答える 2

0

jquery のどのバージョンを使用していますか?
私は Fiddle を作成し、あなたのコードは機能します (私は、li 要素を firebug で監視しており、クラス「アクティブ」が正しく消えます)

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

に変更removeClassしてみることができtoggleClassます。多分それはうまくいきます。

于 2013-01-22T14:15:27.487 に答える
0

まず、変数は何をしますvar $more =か? これはこの関数には不要だと思います。この変数はユーザーのどこにもありません。

たぶん、コード全体を投稿できます。

ウーター・グルツ

于 2013-01-22T14:12:41.503 に答える