[英]moving javascript into assets folder
我試圖將我的javascipt從其工作所在的視圖頁面移至asset / javascripts文件。 但是,當我采取行動時,javascript將不再執行。 我不確定為什么嗎?
$('.dropbtn').click(function(){ if($(this).hasClass("active") ) { $(this).parent(".dropdown").find('.dropdown-content').removeClass('show'); $(this).removeClass('active'); } else{ $('.dropdown-content').removeClass('show'); $(this).parent(".dropdown").find('.dropdown-content').addClass('show'); $(this).addClass('active'); } });
如果您的Javascript文件包含在資產管道中,它將被串聯,縮小並預處理為一個大的.js文件,默認情況下,該文件包含在布局的<head>
。 到瀏覽器閱讀此文件時,尚未加載與.dropbtn
類關聯的dom元素,因此從未添加click
事件偵聽器。
解決方案是將代碼包裝在一個函數中,該函數在文檔加載后即被調用:
$(document).ready(function(){
// your code goes here.
});
但是,如果您使用的是turbolinks(默認情況下在rails中包含),則需要使用:
$(document).on('turbolinks:load', function(){
// your code goes here.
});
這樣做的原因是,一旦加載了文檔,turbolinks就會對其進行更新,而不是在每次請求后重新加載它,因此$(document).ready()
僅會在'turbolinks:load'
每次加載內容時觸發一次。通過您應用中的turbolink。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.