Javascript jQuery DOM附加标记

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> </

这是与一个问题有关的。我尝试将AJAX响应中返回的HTMLDOM附加到现有DIV中。我看到了所有文本,但似乎所有标记(如粗体、斜体等)都丢失了

我的AJAX(XML)数据如下所示:

<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 ] ) );
    });
}