jquery - $(“#myElement”)。load(url)在插入表行时不起作用

时间:2012-02-29 10:01:22

标签: javascript jquery

我有这段代码:

$('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><center>" + $('#customerRecordForm').load(url) +  "</center></td></tr>");

问题是它返回此值object Object而不是div元素。奇怪的部分是如果我独立加载div,我的意思是如果我不将它插入表格行中它正在工作。

工作代码是:

$('#customerRecordForm').load(url);

我怎么能让它发挥作用?我真的需要插入div格式。请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:2)

问题是因为$('#customerRecordForm').load(url);会使用来自网址的HTML填充#customerRecordForm元素,然后返回jQuery对象,而不是HTML作为字符串。

您有两种选择。首先,您可以更改逻辑以从AJAX调用获取所需的HTML,然后将其插入表格单元格中,如下所示:

$.ajax({
    url: url,
    dataType: "html",
    success: function(html){
        $('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><center>" +  html +  "</center></td></tr>");
    }
});

或者,您可以附加单元格,然后在该新元素上调用load(),如下所示:

var $row = $('#customerPaymentTable > tbody > tr').eq(index);
$row.after('<tr><td colspan='6' class="foo"></td></tr>');
$(".foo", $row).load(url);

答案 1 :(得分:1)

我认为你是以某种奇怪的方式使用它。

您应该在要加载数据的元素上调用load函数。 load(url)函数没有返回输出值。它只是从URL加载字符串并将其放入ID为customerRecordForm

的元素中

所以当你创建一个

<div id="customerRecordForm"></div>

然后在javascript中你只需要打电话:

$('#customerRecordForm').load(url);

此处有更多信息:http://api.jquery.com/load/

在你的例子中,它可能是这样的:

$('#customerPaymentTable > tbody > tr').eq(index).after("<tr><td colspan='6'><div id='customerRecordForm'></div></td></tr>");
$('#customerRecordForm').load(url);

答案 2 :(得分:1)

jQuery.load()不会返回有效的HTML块,而是返回jQuery对象。此外,jQuery.load()将内容异步加载到您调用它的元素中。当然不是你想要的......

您必须在加载内容后注入html代码。

$.get(url, function (response) {
    $('#customerPaymentTable > tbody > tr').eq(index)
        .after("<tr><td colspan='6'><center>" + response +  "</center></td></tr>");

});