我有一个表格和表格的页面(用表格显示保存数据的结果)。
表单使用ajax提交数据,保存数据,之后应重新加载表。
问题是在执行$.load
之后加载了表(使用AJAX加载($(document).ready()
))。这意味着该表没有所需的功能。
是否有任何方法可以推迟执行$(document).ready()
直到AJAX完成加载,或者我会使用完全不同的方法,比如使用iframe?
是我的问题的一个例子:
$(document).ready(function(){
//some code here that needed for the html in table.html e.g. datepicker, chosen, jqueryui, etc
});
<form>
//Inputs with a button to submit using ajax, where the result is displayed using table.php
</form>
<div id="tableOfContent"></div>
<script>
$('#tableOfContent').load("table.php");
</script>
答案 0 :(得分:0)
document.ready在页面的HTML加载完成后被调用,没有两种方法。
但是,您可以使用实时绑定,它将处理程序附加到页面上尚未存在的元素。
示例:
$(".datepicker").live("click", function() {
$(this).datepicker();
})
更新了jQuery&gt; 1.7(这也更快)
$("#tableOfContent").on("click", ".datepicker", function() {
$(this).datepicker();
})
答案 1 :(得分:0)
你可以做到
$('#tableOfContent').load("table.php",function(){
//completed load actions here
});
但是你应该注意,如果你加载图像,它们将不会被加载。如果是这种情况,你可以使table.php的内容最初隐藏,并在$('#tableOfContent img')。load()里面再次执行相同的操作。这适用于1张图片;多个图像有点复杂,但随意询问您是否正在寻找:)
答案 2 :(得分:0)
您可以使用jQuery.holdReady()延迟就绪事件:
$.holdReady(true);
// Do your custom stuff... the document may already be loaded.
$.holdReady(false); // Now the ready event will fire as soon as the DOM is loaded.
答案 3 :(得分:0)
$(document).ready()应该用于应该执行的脚本,当文档准备就绪时。
如果你需要在ajax调用之后执行某些操作,你可以在函数中编写所有内容并使用ajax回调调用它。
function what_i_need() {
// bla bla
}
<script>
$('#tableOfContent').load("table.php", {}, what_i_need);//code had syntax error; '{)'
</script>
我不确定。另外,您也可以在文档准备就绪时调用该函数。
$(document).ready(function(){
what_i_need();
});
答案 4 :(得分:0)
从ready函数中加载表数据,并使用load()函数的complete事件来调用余数
$(document).ready(function() {
// click bindings etc ..
$('#tableOfContent').load("table.php",function() {
// things to do once the table is loaded
});
});