Эта вещь меня заводит.event.preventDefault не работает с загруженным контентом AJAX
Итак, я загружаю простой HTML-код через AJAX, и как только он загружается в DOM, я делаю это.
$('#wrap a.link').click(function(e) {
e.preventDefault();
alert("asdasdad");
});
Это просто не мешает переходу ссылки на URL-адрес в атрибуте href.
Мой синтаксис кажется правильным, и я убедился, что элемент находится в DOM и что функция находит элемент a.link
.
$("#wrap a.link").each(function(key, value) {
console.log("found a link"); // this shows up in the console
});
Я также попытался с помощью off()
и stopImmediatePropagation()
только в случае, если какой-то другой случай не может мешать, но ничего. Я также попытался связать событие внутри цикла each()
с тем же результатом.
Что может быть причиной такого поведения?
Возможно потому, что это просят много, даже здесь. Поиск Google для «события jQuery динамического элемента» даже дает результат SO. Хотя я не уменьшал ни одного слова, я не против дублирования. – vcanales
'как только он загружается в DOM, я это делаю. Поэтому, если это утверждение верно, это не проблема делегирования. Или, может быть, вы не используете соответствующий обратный вызов ajax. Во всяком случае, ваш код пропустит какой-то контекст, чтобы понять, что происходит не так, например, как вы его называете ??? –
'# wrap' является в DOM, так как тело загружается, и, как вы можете видеть из' each() 'элементы находятся внутри' # wrap', поэтому я предполагаю, что загруженный код находится в DOM. Я ошибаюсь, чтобы предположить это? – Pier