jQuery追加DOM

时间:2010-09-09 17:44:49

标签: javascript jquery dom

jQuery.append()的所有示例似乎都采用了一个html字符串并将其附加到容器中。我的用例略有不同。我的服务器返回一个包含要显示的HTML文本的XML,如:

<event source="foo">
    <contents>
        <h1>This is an event</h1>
        This is the body of the event
    </contents>
</event>

我有一个div,需要显示这些内容。

我的JS目前执行以下操作:

  1. 在$ .ajax()成功处理程序中将XML数据加载到jQuery中:

    var jData = $(数据);

  2. 找到内容标记并尝试将其子项添加到应显示该事件的div:

    var contents = jData.find( "contents" );
    if( contents != null )
    {
        $( contents ).children().each( function( index, value ) 
        {
         $( "#eventDiv" ).append( $( value ) );
        });
    }
    
  3. append()调用因Chrome上的未捕获错误:WRONG_DOCUMENT_ERR:DOM异常4 而失败。调试器将值显示为DOM 元素对象,将 $(value)显示为包含元素 Object >

    任何帮助将不胜感激。

    感谢。 -Raj

1 个答案:

答案 0 :(得分:8)

您不能将属于一个DOM树的节点附加到另一个文档。

尝试clone他们:

$("#eventDiv").append( jData.find("contents").children().clone() );

或者只是使用他们的文字表示来重新创建它们:

$("#eventDiv").append( jData.find("contents").html() );