Después de examinar la fuente de jQuery, veo que el problema que tengo es que replaceWith
llama a , que no existe para los documentos XML. ¿No se supone que replaceWith
funciona en documentos XML?replaceWith on XML problem
He encontrado que esto es cierto sencilla solución, en caso de que alguien lo necesita en el futuro, que va a lograr lo que estoy tratando de hacer:
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
});
Pero todavía me gustaría saber por qué el camino más fácil no funciona
No sé mucho sobre jQuery, pero ¿no debería funcionar?
xml = $.parseXML('<a><b>hey</b></a>')
$(xml).find('b').replaceWith('<c>yo</c>')
En lugar de xml
que representa <a><c>yo</c></a>
falla y representa <a></a>
. ¿Hice algo mal? Estoy usando jQuery 1.6.2.
Editar:
Como nota al margen, si trato de usar la versión de la función de replaceWith
, así:
$(xml).find('b').replaceWith(function() {
return '<c>yo</c>' // doesn't matter what I return here
})
consigo este error:
TypeError: Cannot call method 'replace' of undefined
Editar 2:
replaceAll
funciona sin embargo, pero necesito utilizar la versión de función por lo que no puede conformarse con esto:
$('<c>yo</c>').replaceAll($(xml).find('b')) // works
Datos 3:
Esto también funciona:
xml.find('b').replaceWith($('<c>yo</c>')) // but not with the $() around the argument
¿Lo consideraría útil? –
@Seth: Claro, ¿por qué no? Lo peor que puede pasar es que obtendrá un "no arreglará" y al menos el problema será documentado. –
Sí. No funciona como las personas razonables esperarían, o como lo implica la documentación. Solo busque errores previos antes de publicar (hice una búsqueda * rápida * y no vi nada). –