2017-06-18 120 views
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技能仍然很弱。

+0

您是否在控制檯中發現任何錯誤? – DonovanM

+0

完全沒有。就好像** menuL.onclick **根本不會發生。 (試着用一條警告信息 - 沒有任何反應。) – sveto

回答

0

哦,來吧夥計們,90%的時間我張貼在這裏,因爲我真的需要幫助 - 我沒有得到任何幫助。數字...

答案很簡單(但我在嘗試其他腳本時失去了一整夜)。如果第二個腳本劫持事件,只需將該函數移動到第二個腳本並在那裏運行。

它的工作原理!