2017-01-25 50 views
0

即時通訊嘗試創建一個下拉菜單,顯示用戶何時點擊它,並關閉用戶是否再次點擊它或點擊菜單外部。現在我有一個工作腳本感謝這個社區:http://jsfiddle.net/aL7Xe/1000/隱藏在Drupal 8中的下拉菜單不起作用

但是,當在我的drupal 8網站上使用它,它不工作,有什麼想法?使用

jQuery的IM:

jQuery(document).ready(function() { 
    $('.topmenu').click(function(e){ 
    e.stopPropagation(); 
     $(this).find('.dropdown-menu').toggleClass('hide'); 
    }); 
    $('html').on('click', function(){ 
     $('.dropdown-menu').addClass('hide'); 
    }); 
}); 

在此先感謝

解決:

我解決了它已經,原來當我看在Firefox的調試功能@它說控制檯錯誤$不是一個函數。然後我在第一行添加了$,所以它變成這樣jQuery(document).ready(function($) { 而且錯誤消失了,它工作。

回答

0

Blomkfist174,

我很高興你有你的工作的JQuery。我想我會提供這個代碼給你以後使用。請參閱當代碼將加載/執行評論:

(function (Drupal, $, window) { 

    // To understand behaviors, see https://www.drupal.org/node/2269515 
    Drupal.behaviors.themename = { 
    attach: function (context, settings) { 

     // Execute code once the DOM is ready. $(document).ready() not required within Drupal.behaviors. 

     //Code in your example would go here: 
     //---------------------------------------------- 
     $('.topmenu').click(function(e){ 
     e.stopPropagation(); 
     $(this).find('.dropdown-menu').toggleClass('hide'); 
     }); 
     $('html').on('click', function(){ 
     $('.dropdown-menu').addClass('hide'); 
     }); 
     //---------------------------------------------- 


     $(window).load(function() { 
     // Execute code once the window is fully loaded. 


     }); 

     $(window).scroll(function() { 
     // Execute code when the window scrolls. 


     }); 
    } 
    }; 
} (Drupal, jQuery, this)); 

編碼這樣你的主題JS將讓你與其他Drupal的庫進行互動。例如,您可以在Ajax運行後運行JS。您需要修改下面的代碼在這一行匹配您的主題名稱:

Drupal.behaviors.themename = { 

我創造了我的主題從基本主題。這個JS文件是作爲一個起點提供的。我也使用gulp來獲取我的源JS文件並對它們進行uglify/minify。採取這種方法可以讓我有一個源文件,它具有很好的格式和註釋,但在網站上使用的是最小文件。

我希望這有助於!