Как обнаружить новое создание элемента в jQuery?

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

function getLinkCount() {
    alert("Links:" + $("a").length);
}

Если бы я призываю на документе, готовом, он работал бы как ожидалось. Но что, если теперь новая ссылка вставляется в страницу динамично через JavaScript, как я могу быть уведомлен для выполнения счетчика ссылки, функционируют снова? (Я не имею никакого контроля над сценарием, который мог создать новую ссылку).

В основном я ищу что-то подобное live() только это наблюдало бы событие создания элемента, что-то как:

$("a").live("create", getLinkCount);

это инициировало бы, когда новый элемент создается.

33
задан serg 2 August 2010 в 01:05
поделиться

2 ответа

Для этого вы можете использовать плагин .livequery () , он запускается для каждого элемента, включая новые, например:

$("a").livequery(getLinkCount);

Однако это плагин устарел и не рекомендуется для текущих версий jQuery.

Обычно это проще сделать, когда вы создаете элементы, хотя, например, если вы делаете это после запросов AJAX, обработчик .ajaxComplete () может быть хорошим местом для пример:

$(document).ajaxComplete(getLinkCount);

Это будет выполняться после каждого запроса, и поскольку вы обычно создаете элементы в своем обработчике success , они уже будут присутствовать при запуске этого полного обработчика.

22
ответ дан 27 November 2019 в 18:01
поделиться

Вы можете использовать событие DOMSubtreeModified. Например:

$(document).bind('DOMSubtreeModified',function(){
  console.log("now there are " + $('a').length + " links on this page.");
})
43
ответ дан 27 November 2019 в 18:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: