2016-06-09 151 views
0

我有一個使用JavaScript的Rails應用程序,它在文檔加載時起作用。但是,當我進入新頁面時,我需要重新加載JavaScript。反正有沒有重新加載頁面,或者我不得不重新加載頁面?頁面刷新 - JavaScript

我現在有這樣寫的

var main = function() { 

var toggleProductImage = function() { 
    $(this).children().each(function() { 
     this.classList.toggle('hide'); 
    }) 
} 

$('.ind a').each(function() { 
    $(this).mouseenter(toggleProductImage); 
    $(this).mouseleave(toggleProductImage); 
}); 
}; 

回答

0

授權使用動態生成HTML事件jQuery代碼,例如從。一個ajax請求。發現是靜態的最接近的父母,我使用document,因爲我不知道你的DOM樹:

$(document).on('mouseenter', '.ind a', toggleProductImage) 
      .on('mouseleave', '.ind a', toggleProductImage); 

function toggleProductImage() { 
    $(this).children().toggleClass('hide'); 
} 

這將綁定在document事件且僅當一個元件匹配.ind a目標開火的處理程序。

查看更多有關.on(events [, selector ] [, data ], handler)

events類型:PlainObject
其中字符串鍵表示一個或多個空間分隔的事件類型和可選的命名空間的物體,並且這些值代表將被稱作處理功能爲事件。

selector類型:字符串
選擇器字符串,用於過濾將調用處理程序的選定元素的後代。如果選擇符爲空或省略,則處理程序在到達選定元素時總是被調用。

我也改變了你的toggleProductImage,使其更加的jQuery樣

0

我不認爲重新加載JavaScript是你想要的。你可以得到一個js文件並再次解析它,然而之前的文件加載的對象仍然會在那裏。您必須跟蹤您創建的所有內容,並刪除所有事件處理程序,然後重新加載js。

相反,我認爲你應該在父元素上附加mouseenter/mouseleave並過濾處理程序。

$('.ind').on('mouseenter', 'a', function(e) toggleProductImage); 
$('.ind').on('mouseleave', 'a', function(e) toggleProductImage);