Ответ 1
$.fn.replaceWithPush = function(a) {
var $a = $(a);
this.replaceWith($a);
return $a;
};
Я пишу script, чтобы заменить некоторые изображения на div в jQuery. В настоящее время я использую метод replaceWith()
, который отлично работает, но возвращает новый (удаленный) элемент вместо нового элемента.
Метод .replaceWith(), как и большинство jQuery, возвращает jQuery объект, чтобы другие методы могли быть прикованный к нему. Однако это должно быть отметил, что исходный объект jQuery возвращается. Этот объект относится к элемент, который был удален из DOM, а не новый элемент, который заменил его.
Как я могу получить ссылку на новый элемент DOM, который я только что создал?
$.fn.replaceWithPush = function(a) {
var $a = $(a);
this.replaceWith($a);
return $a;
};
Я верю, что replaceAll() возвращает новое содержимое. Он имеет цель и исходный код обращен от replaceWith().
var newobj = $( "<p>New paragraph" ).replaceAll( "#replaceme" );
Приобретите свой вызов replaceWith() вызовом jQuery, чтобы найти родительский node, а затем используйте родительский элемент, чтобы найти новый node, который был вставлен с помощью функции replaceWith().
Вот пример внутри обработчика успеха функции $.ajax(), который заменяет форму:
success: function(data,textStatus,jqXHR){
var $li=$form.parents('li');
$form.replaceWith(data);
var $form=$li.find('form');
//...
},
В этом примере для каждого li была уникальная форма. Возможно, вам придется адаптировать свой подход в зависимости от того, как вы создаете свой DOM.