Javascript JQuery-$(document).ready()在加载元素之前执行

Javascript JQuery-$(document).ready()在加载元素之前执行,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,因此,我从一个返回Json的MVC3操作加载一些数据,其中包含一些参数和字符串形式的内容。我将内容附加到某个div中。在部分视图中,我有一个document.ready JQuery事件。由于某种原因,该函数在追加内容之前执行,并且我在ready函数中声明的所有选择器都为空 这有逻辑上的原因吗?我设置了一个超时,选择器可以看到元素。但超时可能非常不精确 有什么建议吗 谢谢 代码提琴示例:听起来您希望在加载所有资产后激发$(document).ready()。这不是$(document).read

因此,我从一个返回Json的MVC3操作加载一些数据,其中包含一些参数和字符串形式的内容。我将内容附加到某个div中。在部分视图中,我有一个document.ready JQuery事件。由于某种原因,该函数在追加内容之前执行,并且我在ready函数中声明的所有选择器都为空

这有逻辑上的原因吗?我设置了一个超时,选择器可以看到元素。但超时可能非常不精确

有什么建议吗

谢谢


代码提琴示例:

听起来您希望在加载所有资产后激发
$(document).ready()
。这不是
$(document).ready()
的工作方式。它在DOM完成渲染时触发。没别的了。这听起来像是您想要使用的,它会一直等到所有资产都加载完毕。

$(document).ready()
在HTML启动时被调用!已加载。这意味着,如果您的HTML加载了一些对HTML DOM进行更改的javascript,则会在此之前调用那些
$(document).ready()

你应该确保你的函数是最后调用的,或者使用
setTimeout
调用它自己,直到你需要的元素都加载完毕。

在$(文档)中。ready函数你可以调用jQuery的 $.ajax或 $.getJSON 从服务器获取答案。然后可以在需要的地方注入json响应。无需设置超时

我也有同样的问题

首先

var elementIWannaGet = $('html-content-div');
应该是

var elementIWannaGet = $('#html-content-div');
但是,您最好将脚本与内容分离,因为dom已经加载

考虑更改对此的响应:

{ result: true,
  data: { id: '1' },
  elementId: '#html-content-div',
  content: '<div id="html-content-div">Html content! :D</div>'
}

我最后编写了一个方法,该方法等待通过ajax加载的HTML中的选定元素准备就绪。

$(窗口)。load()函数不会在ajax请求中启动,因为我没有执行完整的页面回发。提示:$(窗口)。load()函数已从1.8版中弃用。我无法使用该解决方案,因为MVC中没有这些JS库。我知道这是一个旧答案,但您能提供一个代码片段吗?
function contentLoaded(response) {
    if (response.result == true)
        handleError(response);

    // Get the container where the response.content will be rendered to.
    var targetContainer = $('#target-container-id');

    // Append the content
    targetContainer.append(response.content);

    // Do something with your container
    alert( $(response.elementId).html().length );
}