带脚本的动态加载页面

时间:2015-09-23 10:04:31

标签: javascript jquery ajax

如果我使用jquery函数$ .load从服务器(ASP.net局部视图)获取一些内容并将其加载到div中,并且如果该内容具有类似的内容:

<script>
$(document).ready(function () {
     some code block
})
</script>

在将内容加载到div后,是否会对该代码块进行处理,是否会触发就绪事件?

2 个答案:

答案 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完全加载后才会执行,你的代码将被执行。

Source