0
我在網頁上使用了兩種不同的腳本 - 一種是純JS,另一種是jQuery。衝突的腳本,有什麼問題?
JS腳本用於在移動視圖中切換漢堡包菜單。 hamb.onclick顯示點擊漢堡時的菜單,menuL.onclick點擊菜單項時隱藏菜單。後者在jQuery腳本處於活動狀態時拒絕工作(當jQuery腳本被註釋掉時它就起作用)。
<script>
(function() {
function hasClass(elem, className) {
return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' ');
}
function toggleClass(elem, className) {
var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' ';
if (hasClass(elem, className)) {
while (newClass.indexOf(' ' + className + ' ') >= 0) {
newClass = newClass.replace(' ' + className + ' ', ' ');
}
elem.className = newClass.replace(/^\s+|\s+$/g, '');
} else {
elem.className += ' ' + className;
}
}
var hamb = document.querySelector('.hamburger');
var menuL = document.querySelector('.menuList');
hamb.onclick = function() {
toggleClass(this, 'hamburgerOpen');
toggleClass(menuL, 'menuActive');
};
menuL.onclick = function() {
toggleClass(hamb, 'hamburgerOpen');
toggleClass(menuL, 'menuActive');
};
})();
</script>
jQuery的用於平滑導航/滾動到頁面的錨:
<script>
function scrollNav() {
$('.menu a').click(function(){
//Toggle Class
$(".active").removeClass("active");
$(this).closest('li').addClass("active");
var theClass = $(this).attr("class");
$('.'+theClass).parent('li').addClass('active');
//Animate
$('html, body').stop().animate({
scrollTop: $($(this).attr('href')).offset().top - 160
}, 800);
return false;
});
$('.scrollTop a').scrollTop();
}
scrollNav();
</script>
據我瞭解,jQuery的腳本highjacks JS腳本的onclick事件,因爲他們的工作在同一個父元素上:「.menu a」和「menuList」(這是「.menu」中的「ul」)。
我該怎麼做才能讓兩個腳本一起工作?我是初學者,我的JavaScript技能仍然很弱。
您是否在控制檯中發現任何錯誤? – DonovanM
完全沒有。就好像** menuL.onclick **根本不會發生。 (試着用一條警告信息 - 沒有任何反應。) – sveto