После изучения источника jQuery я вижу, что у меня проблема в том, что replaceWith
вызывает html
, который не существует для документов XML. replaceWith
не должен работать с документами XML?
Я нашел этот по общему признанию простой обходной путь, в случае, если кто-то нуждается в этом в будущем, который достигнет того, что я пытаюсь сделать:
xml.find('b').each(function() {
$(this).replaceWith($('<c>yo</c>')) // this way you can custom taylor the XML based on each node's attributes and such
});
Но я все же хотел бы знать, почему простой способ не работает.
<ч />
Я не знаю много о jQuery, но разве это не должно работать?
xml = $.parseXML('<a><b>hey</b></a>')
$(xml).find('b').replaceWith('<c>yo</c>')
Вместо xml
, представляющего <a><c>yo</c></a>
, он терпит неудачу и представляет <a></a>
. Я сделал что-то неправильно? Я использую jQuery 1.6.2.
Edit:
В качестве примечания, если я попытаюсь использовать версию функции replaceWith
, примерно так:
$(xml).find('b').replaceWith(function() {
return '<c>yo</c>' // doesn't matter what I return here
})
Я получаю эту ошибку:
TypeError: Cannot call method 'replace' of undefined
Редактировать 2:
replaceAll
работает, но мне нужно использовать версию функции, поэтому я не могу согласиться с этим:
$('<c>yo</c>').replaceAll($(xml).find('b')) // works
Редактировать 3:
Это также работает:
xml.find('b').replaceWith($('<c>yo</c>')) // but not with the $() around the argument