2016-12-24 2 views
1

Я работаю с video.js и video.js библиотека загружается по тегу скрипта. Я хочу отслеживать функцию щелчка на элементе списка и обновлять плей-меню.

$(".vjs-menu-item").on("click" ,function(){ alert('selector');}); 

но не работает этот один

$(document).on("click",".vjs-menu-item", function() {alert('document'); }); 

Поэтому $(document) метод работает только по этим пунктам, которые добавляются на одной странице, т.е.

<p id="vjs-menu-item"> click me </p> 
+0

как об изменении '$ (документ) до $ ("HTML, тело")' – bugscoder

+0

@bugscoder это должно быть таким же, как и при работе с документом, работает только с элементами на одной странице, но не работает с динамически загружаемыми элементами (элементы управления vidoejs). –

+0

Избегайте использования идентификаторов в динамическом контенте. Браузеры используют быстрый кэш поиска, который может получить доступ только к первому совпадению. Вместо этого используйте классы и селектора классов. На данный момент у вас есть сочетание идентификаторов в HTML, но селектор классов. –

ответ

3

Здесь селектор id но вы ссылаетесь на a class

Изменения в этой

$(document).on("click","#vjs-menu-item", function() {alert('documnet'); }); 

или использовать class вместо идентификатора в html

HTML

<p class="vjs-menu-item">Click me</p> 

JS

$(document).on("click",".vjs-menu-item", function() { 
    alert('document'); 
}); 
+0

Я пробовал, но, как я говорю, это работает только те элементы, которые загружаются на одной странице, не работая с теми, которые динамически загружаются через библиотеку :( –

+0

Использование правильного совета - это правильный совет. Делегированный обработчик событий обычно является плохим выбором для идентификаторов –

0
$(document).ready(function(){ 
    $("#vjs-menu-item").click(function(){ 
    alert('document'); 
    }); 
}); 

jsfiddle

+0

Это не так, когда список обновляется. –

+0

означает, что по вашему вопросу вы можете проверить также jsfiddle? –

+0

это то же самое, что и $ (". Vjs-menu-item"). On (" click ", function() {alert ('selector');}); –

0

Заменить идентификатор с классом "это будет работать для вас"

$(document).ready(function(){ 
    $("#vjs-menu-item").on("click",function(){ 
    alert('document'); 
    }); 
}); 
+0

Вы, например, не соответствуют вашему комментарию. Да, они должны использовать классы, но вы использовали селектор идентификаторов. –

Смежные вопросы