html()不检索整个内容

时间:2011-06-20 10:37:26

标签: ajax jquery

我收到以下回复

<div id="weblogs">
    <tr> 
        <td nowrap class="bl">1</td>
    </tr>
    <tr> 
        <td nowrap class="bl">2</td>
    </tr>
</div>

现在我尝试附加如下行:

 function _ajax(postData)
    {       
        loadUrl         = "getweblogs.asp"; 
        $.ajax( {
            url : loadUrl, // your ajax file
            type : 'post',
            data : postData,                
            success : function( resp ) {
                alert($("#weblogs" , resp).html());
                $('#weblogs > tbody:last').append($("#weblogs" , resp).html());

            }
        });
        return false;
    }

替换工作正常。我的问题是,响应中的htmls元素被删除了。我只得到1和2.而不是

   <tr> 
        <td nowrap class="bl">1</td>
    </tr>
    <tr> 
        <td nowrap class="bl">2</td>
    </tr>

我不知道我做错了什么。有人能给我任何线索吗?

谢谢!

问候 玛格达

2 个答案:

答案 0 :(得分:2)

你要做的不是那么清楚。页面中是否已存在id="weblogs"的元素?如果是这样,为什么你的响应有一个具有相同id的元素(不是一个好主意),如果没有,为什么你试图将元素的内容添加到它自己(也不是一个好主意)?

为什么不改变服务器端以发送所需的html,而没有包装div标签(这使得它无效的html,另一个坏主意),然后按原样使用它?

另一个问题是你试图选择永远是空的jquery对象的.html()$(selector, string)永远不会匹配任何东西。如果要搜索其子结构,则需要将字符串设为jquery对象:string = $(string)

我认为你误解了$(selector, $obj)的使用。选择器必须位于$obj -structure:

$('#foo', $('<div id="foo"><span/></div>')); // returns empty jquery object

因此,在ID为#weblogs的元素的子结构中查找weblogs也无法找到任何内容。

答案 1 :(得分:0)

您的问题并不完全清楚,但我会尝试回答:您使用的是Internet Explorer吗?如果是这样,请考虑文档中的这一段:

  

例如,如果属性值仅包含字母数字字符,则Internet Explorer有时会忽略引号。

API docs: html()