DOM没有满载?

bar*_*ron 3 javascript jquery dom

当准备使用jQuery文件时,即$(document).ready(function() { }DOM是否有可能尚未完全加载?

我使用了一些3 第三方工具(Telerik的网格),并建立一个客户端模板来显示一个复选框来代替,就像这样.码:

.ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= OrderID #>' />")
Run Code Online (Sandbox Code Playgroud)

我问的原因是我试图将事件连接到所有要监视的复选框change:

$(':input').change(
    function () {
       alert('you fired!');
});
Run Code Online (Sandbox Code Playgroud)

我在Telerik网格代码之外手动设置了一个复选框,它连接到复选框更改,但telerik网格内的复选框都没有...

在那种情况下 - 是否有解决方法?

Jay*_*ena 8

尝试使用直播,

$(':input').live('change', function() {
                alert('you fired!');
            });
Run Code Online (Sandbox Code Playgroud)

编辑

.live()已从1.7版本中弃用,自版本1.9起被删除:而是在()上实时使用


jfr*_*d00 5

HTML页面中静态定义的DOM不可能尚未加载$(document).ready().但是,如果您使用的是动态加载或创建HTML的第三方库,则无法保证库在此时已完成业务$(document).ready().事实上,它很可能没有.

你有几个选择:

  1. 您可以找到在第三方库创建HTML之后触发的事件,因此现在存在复选框,然后使用传统的jQuery来连接它们.
  2. 您可以使用.live()jQuery中的功能捕获甚至在您指定要连接它们时尚不存在的DOM对象的事件.你可以在.live()这里阅读:http://api.jquery.com/live/.它主要像普通事件处理程序一样工作,只是它只适用于某些事件,并且在如何停止传播方面存在一些差异.