Как использовать jquery для HTML, загруженного после document.ready ()

0

У меня есть несколько HTML-элементов, которые отображаются функцией javascript на странице:

<a href="#" class="test1">Test</a>
<a href="#" class="test2">Test</a>
<a href="#" class="test3">Test</a>

Затем у меня есть еще один javascript, который я использую для создания функции при нажатии Test:

$(document).ready(function(){

   $( ".test1" ).click(function() {
   // Code here
   });

   $( ".test2" ).click(function() {
   // Different code here
   });

   $( ".test3" ).click(function() {
   // Different code here
   });

});

Однако, поскольку вставленный HTML не загружается одновременно с загрузкой страницы (она динамически вставлена после), моя функция щелчка не фиксирует событие. Как я могу это решить?

Теги:

3 ответа

1

Вам необходимо использовать делегированный обработчик событий:

$(document).ready(function(){
    $(document)
        .on('click', '.test1', function() {
            // Code here
        })
        .on('click', '.test2', function() {
            // Code here
        })
        .on('click', '.test3', function() {
            // Code here
        });
});

Обратите внимание, что для обеспечения наилучшей производительности document должен быть изменен на ближайший статический родительский элемент, который доступен для загрузки DOM.

  • 0
    Если у меня есть целый набор функций, могу ли я вложить их в (документ) .on? Если так, какой будет синтаксис?
  • 0
    Это зависит от структуры этих функций и от того, как логика протекает между ними. Можете ли вы отредактировать свой вопрос, чтобы включить эти функции.
Показать ещё 5 комментариев
0

Вы можете сделать события клика "живыми", чтобы они привязывались к объектам, поскольку они были введены в dom. Просто измените.click(function() {....}); to.live('click', function() {....});

  • 0
    Извините за плохое форматирование. Я нахожусь на телефоне, набираю ....
  • 0
    Нет нет. .live() устарела. .on() этого используйте .on() .
Показать ещё 1 комментарий
0

Использовать .on()

Поскольку элементы добавляются динамически, вы не можете напрямую связывать события с ними. Поэтому вам нужно использовать Event Delegation.

$(document).on('click', '.test', function() { //code here });

Синтаксис

$( elements ).on( events, selector, data, handler );
  • 0
    Спасибо, зачем использовать (документ). Уже тогда вообще? Каковы преимущества / недостатки этого?
  • 0
    @ alias51 Читать это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню