2015-10-12 15 views
0

我有一個簡單的jQuery腳本,用於在懸停時播放/暫停視頻,當我第一次在帶有will_paginate gem的rails中加載頁面時(例如,第1頁),該腳本可以正常工作。will_paginate分頁鏈接javascript不工作

我的問題是,當我點擊下一頁或特別是任何其他頁面時,jQuery腳本不起作用,但當我查看頁面源代碼時,javascript代碼仍然存在。

我必須重新加載頁面才能使其正常工作?

var figure = $(".video").hover(hoverVideo, hideVideo); 
//video is a div class that my videos use, this is at index.html.erb 
function hoverVideo(e) { 
    $('video',this).get(0).play(); 
} 

function hideVideo(e) { 
    $('video',this).get(0).pause(); 
} 
+0

發佈你如何附加播放/暫停事件 – guramidev

+0

現在顯示腳本 – Wraithseeker

回答

1

你的問題是,當你的頁面被改變我相信頁面刷新,AJAX和新創建的元素沒有重視他們的活動。最簡單的解決方法是:

$(document).on('mouseenter','.video', hoverVideo).on('mouseleave','.video',hideVideo); 

這樣的jQuery總是會調用mouseenter/mouseleave功能,但只有當元素已指定.video級防火的功能。所以你不用擔心你的新創建的元素是否有任何附加到它們的事件或者沒有

+0

嘿,謝謝你的工作!我對jQuery和JavaScript相當陌生,而且我很難理解爲什麼新創建的元素沒有附加任何事件? – Wraithseeker

+0

由於之前的元素被**刪除**,因此所有附加到它們的事件也會消失。當頁面上出現新的元素時,你的javascript已經在之前被觸發了(頁面沒有刷新以再次觸發它),這意味着它不會再次附加事件,所以你必須手動執行,或者像這樣,後者是最簡單的解決方案 – guramidev