2013-09-16 2 views
1

У меня есть некоторые HTML прилагаемых с помощью рулей, но я не в состоянии получить событие от гиперссылки пожара:Jquery нажмите не связываясь

JS - этот код вызываются при document.ready.

$(".media-item a.meddelete").unbind("click"); 
$(".media-item a.meddelete").click(function (event) { 
    event.preventDefault(); 
    var id = $(this).data("assetid"); 
    alert(id); 
}); 

HTML

<div class="media-item"> 
    <p><a href="ImageManipulation.aspx">Edit</a></p> 
    <p><a href="#" class="meddelete">Delete</a></p> 
</div> 

Я не могу видеть, что это не так, какие-то идеи?

+1

Связано ли обязательство до или после ввода HTML? –

+0

Ручки также будут работать на 'document.ready()', поэтому вышеуказанный html не будет существовать до этого. 2 ответа ниже, используя «on()» и делегирование, исправит эту проблему. Если они не работают, значит, что-то еще не так. – Archer

ответ

2

Предполагая, что с помощью «впрыскивается» вы имеете в виду, что элементы в вашем примере добавляются к DOM динамически после загрузки страницы, вы должны использовать делегированный обработчик события:

$(document).on('click', '.media-item a.meddelete', function (event) { 
    event.preventDefault(); 
    var id = $(this).data("assetid"); 
    alert(id); 
}); 

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

+0

Его не прилагается как таковое, его «помещают» в дом где-то между началом и концом. Будет ли ваш пример кода работать? – DavidB

+0

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

+0

Огромное спасибо за помощь – DavidB

2

Изменить это:

$(".media-item a.meddelete").click(function (event) { 

к этому:

$(document).on('click', ".media-item a.meddelete", function (event) { 

Если вы динамически добавлять элементы на странице, вам необходимо использовать синтаксис делегирования событий JQuery в.

+0

Спасибо, в чем разница, поскольку я скопировал из другого фрагмента кода, который работает так, как показано выше? – DavidB

+0

Большое спасибо – DavidB

+2

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

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