2015-10-12 5 views
0

У меня есть простой сценарий jQuery, который воспроизводит/приостанавливает видео при зависании, который работает правильно, когда я впервые загружаю страницу (например, стр. 1) в рельсах с жемчугом will_paginate.will_paginate pagination links javascript not working

Моя проблема заключается в том, что при нажатии на следующую страницу или на любых других страницах, сценарий 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