我有一个简单的jQuery脚本,可在悬停时播放/暂停视频,当我第一次使用will_paginate gem将页面(例如第1页)加载到轨道中时,它可以正常工作。
我的问题是,当我单击转到下一页或特别是任何其他页面时,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();
}
最佳答案
您的问题是,当您更改页面时,我相信页面会用ajax刷新,并且新创建的元素没有附加事件。最简单的解决方案是:
$(document).on('mouseenter','.video', hoverVideo ).on('mouseleave','.video',hideVideo );
这样,jquery将始终调用
mouseenter
/ mouseleave
函数,但仅在元素指定了类.video
时才触发函数。因此,您不必担心新创建的元素是否附加了任何事件,或者没有