在使用asp.net mvc 3时,如何将jQuery load()转换为动态创建的元素?

时间:2012-04-27 07:17:26

标签: jquery asp.net-mvc-3

我无法将纯HTML加载到动态创建的DIV元素中。我的脚本如下所示:

$("button").click(function () {
  var divElem = $('<div />').load('@Url.Action("MyFunkyPartialView", "Home")');
});

MyFunkyPartialView操作方法返回如下所示的部分视图:

1 个答案:

答案 0 :(得分:6)

您新创建的DIV元素在哪里?

当您创建HTML元素(即$('<div/>'))时,它不会自动插入到文档中,因此您无法在屏幕上看到它。你必须指定你想把它放在哪里。

然而,它已经在内存中了,所以你已经可以操作它并为它做些事情,包括在你做的时候向它添加内容。您拨打.load()时没有错。

长话短说,那就是你没有做错 - 你只是错过了工作流程中的一步。

然后,您唯一需要做的就是将DIV插入到您的文档中。您可以使用以下内容执行此操作:

var divElem = $('<div/>').load('@Url.Action("MyFunkyPartialView", "Home")');
// ...
divElem.appendTo('#main');

这会在DIV元素中添加#main元素,而不是它的原始内容。

修改

访问DIV的内容时,我们必须确保.load()来电有机会先完成。通常,这最好通过complete回调来实现。

var divElem = $('<div/>')
    .load('@Url.Action("MyFunkyPartialView", "Home")', function () {
        // this function executes after the load AJAX call completes,
        // so this is the best place to access the contents of the div.
        alert(divElem.html());
    });