Javascript JQuery-$(document).ready()在加载元素之前执行
因此,我从一个返回Json的MVC3操作加载一些数据,其中包含一些参数和字符串形式的内容。我将内容附加到某个div中。在部分视图中,我有一个document.ready JQuery事件。由于某种原因,该函数在追加内容之前执行,并且我在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
代码提琴示例:听起来您希望在加载所有资产后激发
$(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 );
}