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

2 jquery asp.net-mvc-3

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

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

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

Ric*_*gan 6

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

当您创建HTML元素(即$('<div/>'))时,它不会自动插入到文档中,因此您无法在屏幕上看到它.您必须指定要放置它的位置.

但是,它已经在内存中了,所以你已经可以操作它并为它做些事情,包括在你做的时候向它添加内容.你打电话没问题.load().

简而言之,那就是你没有做错 - 你只是错过了工作流程中的一步.

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

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

这会在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());
    });
Run Code Online (Sandbox Code Playgroud)