#javascript #jquery
#javascript #jquery
Вопрос:
сначала это изображение, календарь создается с использованием cms, и каждый элемент имеет событие onclick
Кнопки назад и вперед при нажатии сделают новый ajax-запрос и вернут новый набор элементов с их событием onclick
я хочу прикрепить свой собственный обработчик событий ко всем элементам, поэтому я использую метод делегирования jquery в таблице и выбираю все привязки
проблема в том, что 2 события срабатывают одновременно, поэтому я хочу отключить событие onclick и запустить только мою версию, удалив атрибут onclick
элемент, генерируемый cms :
<a class="elem" href="..." onclick="function()">text</a>
моя версия метода делегирования для выбора всех элементов
$("table").delegate(".elem","click", function() {
//DO SOMETHING
});
Ответ №1:
Попробуйте поместить это перед вызовом .delegate(): (непроверенный)
$('table .elem').each( function(i, elem) {
elem.onclick = false;
});
Он в основном удаляет существующий onclick для каждого из этих элементов, позволяя вам заменить его своей собственной функцией.
Комментарии:
1. проблема, когда я нажимаю next или месяц предварительного просмотра, новый набор тегов будет загружен с помощью вызова ajax и вставлен, а также у них будет событие onclick
2. Вы можете настроить функцию в своей области успеха ajax и запустить этот фрагмент в этой функции, и он также удалит все события onclick этого нового элемента. Возможно, вам придется отредактировать функцию, чтобы выбирать только новые элементы, чтобы вы не уничтожали предыдущие события onclick, которые вы, возможно, добавили сами.
3. итак, событие успеха ajax выполняется до или после вставки элемента в dom? (элемент вставлен = успешный вызов ajax, затем вставляет элементы в dom) событие успеха выполняется, когда? после успеха или после вставки?
4. Вы бы запустили ajax, а затем внутри события успеха ajax вы бы прикрепили HTML-код к dom, а затем запустили этот фрагмент.
5. проблема в том, что у меня нет никакого контроля над сценарием, который генерирует таблицу, которая автоматически генерируется в другом месте
Ответ №2:
В jQuery 1.7 они ввели off
метод, который будет
Удалить обработчик событий
Комментарии:
1. проблема, когда я нажимаю next или месяц предварительного просмотра, новый набор тегов будет загружен с помощью вызова ajax и вставлен, а также у них будет событие onclick