如果我使用jquery函数$ .load从服务器(ASP.net局部视图)获取一些内容并将其加载到div中,并且如果该内容具有类似的内容:
<script>
$(document).ready(function () {
some code block
})
</script>
在将内容加载到div后,是否会对该代码块进行处理,是否会触发就绪事件?
答案 0 :(得分:3)
在包含脚本标记的Ajax调用中,所有发送的脚本将在插入到文档对象模型后执行。
但是在你的情况下,脚本标记包含事件赋值,因此事件赋值将执行,但是为什么分配函数在插入到文档对象模型后执行而while事件没有引发? 发生这种情况的原因是:
摘要:
只准备类似于事件,但实际上不是一个事件,它是伪事件。
<强>详细强>
关注代码是jquery库的源代码:
jQuery.fn.ready = function( fn ) {
// Add the callback
jQuery.ready.promise().done( fn );
return this;
};
你看到ready是一个获得函数的jQuery插件。在函数体中说当ready事件完成后执行发送函数。但是当准备完成时。再次查看JQuery源:
jQuery.extend( {
// Is the DOM ready to be used? Set to true once it occurs.
isReady: false,
// A counter to track how many items to wait for before
// the ready event fires. See #6781
readyWait: 1,
// Hold (or release) the ready event
holdReady: function( hold ) {
if ( hold ) {
jQuery.readyWait++;
} else {
jQuery.ready( true );
}
},
// Handle when the DOM is ready
ready: function( wait ) {
// Abort if there are pending holds or we're already ready
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
return;
}
// Remember that the DOM is ready
jQuery.isReady = true;
// If a normal DOM Ready event fired, decrement, and wait if need be
if ( wait !== true && --jQuery.readyWait > 0 ) {
return;
}
// If there are functions bound, to execute
readyList.resolveWith( document, [ jQuery ] );
}
} );
以下行设置了加载文档对象模型:
// Remember that the DOM is ready
jQuery.isReady = true;
所以如果Jquery.isReady == true,传递给ready方法的函数会立即执行。
为在就绪状态而非就绪事件中运行的脚本提供了这样的就绪方法。
答案 1 :(得分:0)
在文档
"ready."
之前,页面无法安全操作 jQuery为您检测这种准备状态。$( document ).ready()
中包含的代码只会在页面文档对象中运行一次 Model(DOM)已准备好执行JavaScript代码。代码包括在内 内部$( window ).load(function() { ... })
将在整个内部运行一次 页面(图片或iframe),而不仅仅是DOM,已准备就绪。
所以,只有在你的dom完全加载后才会执行,你的代码将被执行。