jQuery replace не хранит ссылку на элемент в DOM? - PullRequest
2 голосов
/ 28 октября 2011
var el = $(this); // it's a form

В какой-то момент:

el.replaceWith('<p>Loading...</p>');

Позже:

el.replaceWith(output);

Очевидно, что el больше не существует после первой замены с ...

Можно ли как-нибудь сохранить el, очевидно, с новым контентом?

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Оригинал el был удален и заменен на replaceWith.Создайте новую ссылку, используя возвращаемое значение replaceWith:

var el = $(this); // it's a form
el = el.replaceWith('<p>Loading...</p>');
              //`el.replaceWith()` returns the new element
el = el.replaceWith(output);

Если вы намеревались заменить внутреннее содержимое новым элементом, сохраняя форму, используйте:

el.html(""); //Clear html
el.append('<p>Loading...</p>');
1 голос
/ 08 февраля 2013

jquery's replaceWith возвращает замененный элемент, а не новый

http://api.jquery.com/replaceAll/

вы должны сделать что-то вроде этого:

var el = $(this); // it's a form
var $p = $('<p>Loading...</p>');

el.replaceWith($p);

// now el is unhooked from the dom, that is el.parent() === []
// it is $p who is now hooked, check with $p.parent() === (some node)

//so you should reassing it
el = $p;

// later on

el.replaceWith(output); // but remenber, once again el is unhooked

также, проверьте этот вопрос: https://stackoverflow.com/a/892915/47633

...