これは私のスクリプトです:
$(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");
});
});
このスクリプトを削除すると、他のスクリプトが機能するためです。間違いはどこにありますか?