Javascript jQuery DOM附加标记
这是与一个问题有关的。我尝试将AJAX响应中返回的HTMLDOM附加到现有DIV中。我看到了所有文本,但似乎所有标记(如粗体、斜体等)都丢失了 我的AJAX(XML)数据如下所示:Javascript jQuery DOM附加标记,javascript,jquery,dom,Javascript,Jquery,Dom,这是与一个问题有关的。我尝试将AJAX响应中返回的HTMLDOM附加到现有DIV中。我看到了所有文本,但似乎所有标记(如粗体、斜体等)都丢失了 我的AJAX(XML)数据如下所示: <event source="foo"> <contents> <h1>This is an event</h1> This is the body of the event </contents> </
<event source="foo">
<contents>
<h1>This is an event</h1>
This is the body of the event
</contents>
</event>
试图对克隆的内容执行.html()操作会引发异常:TypeError:无法调用未定义的方法“replace”
我有点惊讶,用jQuery这么难做到这一点。我是否做了一些偏离正轨的事情?似乎jQuery的问题在于查找与允许的标记名不同的标记/节点。也就是说,XML的格式也不好,因为它的内容中既有节点也有文本 这并不好,但它会起作用:
$("#eventDiv").append($(":first-child", data).parent().html());
标记将被包括在内,但被浏览器忽略。看起来jQuery并没有提供一种简单的方法来完成我的任务。总而言之,我的服务器在ajax响应中返回以下数据:
<event source="foo">
<contents>
<h1>This is an event</h1>
This is the body of the event
</contents>
</event>
我有一个id为eventDiv的div,需要在其中显示事件的内容。我希望通过以下方式实现:
$("#eventDiv").append( jData.find("contents").contents().clone() );
但这会导致所有标记丢失,只会导致文本
以下基于XMLSerializer的内容适用于我(不适用于IE):
您可以发布一些HTML和jQueryAjax调用吗?需要查看更多AJAX代码。是否运行ajaxSetup()?你要买什么类型的?jData中有什么?我不得不求助于XMLSerializer。我迭代每个子项,并在追加之前使用序列化程序将其转换为文本。吸取的教训:当前,如果DOM对象是从XMLHTTP响应中获取的,jQuery.append()将无法处理这些对象。@hunter,peter:有关该信息,请参阅前面的问题。我终于找到了解决办法,但不喜欢。
var jData = $( data );
$("#eventDiv").append( jData.find("contents").contents().clone() );
var contents = jData.find( "contents" );
if( contents != null )
{
var serializer = new XMLSerializer ();
$( contents ).contents().each( function( index, value )
{
var cloned = $( value ).clone();
$( "#eventDiv" ).append( serializer.serializeToString( cloned[ 0 ] ) );
});
}