2014-03-11 2 views
-1

У меня есть таблица, созданная после события. Она содержит такого рода ссылки в <td>:Простая функция .click не называется?

<a class="link-capacity" href="#" id="1234">Capacity</a> 

Я хочу, чтобы поймать событие щелчка с JQuery по этим ссылкам, так что я пишу эту функцию:

$(".link-capacity").click(function() { 
    console.log("OK"); 
}); 

Эта функция загружается до генерации таблицы.

Когда я нажимаю на мои ссылки, функция никогда не вызывается. Я что-то упускаю ? Могу ли я создать класс после загрузки моей функции JQuery?

ответ

7

вы должны использовать delegate для этого

$(document).on("click",".link-capacity",function(){ 
    //some operation 
}); 

Это помогает прикрепить обработчики для будущих элементов

3

Вам необходимо делегирование событий с помощью on() для связывания событий к элементам, которые не присутствуют в DOM когда это событие выполняется код привязки.

$(document).on("click", ".link-capacity", function() { 
    console.log("OK"); 
}); 

делегированного событие имеет то преимущество, что они могут обрабатывать событие от потомков элементов, которые добавляются к документу в более позднее время. К выбор элемента, который гарантированно будет присутствовать во время присоединенного делегированного обработчика , вы можете использовать делегированные события , чтобы избежать необходимости часто присоединять и удалять обработчики событий, jQuery doc.

1
$(document).on("click", ".link-capacity", function (e) { 
    e.preventDefault();// is used to prevent the default behavior of the link 
    console.log("OK"); 
}); 
Смежные вопросы