Вымышленный метод jQuery persist - PullRequest
2 голосов
/ 11 февраля 2010

Есть ли способ, чтобы объявление, такое как следующее, сохранялось для всех соответствующих элементов, которые позже добавляются в DOM?

$("a.my-class").replaceWith("<span>Replaced</span>");

Что-то вроде ...

$("a.my-class").persist().replaceWith("<span>Replaced</span>");

(Упорство - это вымышленный метод, который, я надеюсь, передает то, чего я хотел бы достичь.)

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

Нет такого метода, который вам нужен, но если контент добавляется с использованием методов jQuery AJAX, вы можете использовать это:

$("<div></div>").ajaxSuccess(function(){
   $("a.my-class").replaceWith("<span>Replaced</span>");
});

И этот код будет запускаться после каждый успешный AJAX-запрос при условии, что запросы выполняются с использованием вызова jQuery $.ajax (включая $.post или $.get).Вам нужно всего лишь один раз вызвать его на своей странице, и он сработает при любом вызове AJAX.

Если у вас возникли проблемы с заменой, происходящей слишком рано:

$("<div></div>").ajaxSuccess(function(){
   window.setTimeout( function(){
       $("a.my-class").replaceWith("<span>Replaced</span>");
   }, 250);
});
0 голосов
/ 11 февраля 2010

Метод live () в jquery делает нечто похожее, но для событий.

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

$("a.my-class").live('load',function(){
  $(this).replaceWith("<span>Replaced</span>");
});
...