准备好使用jQuery文档时,即$(document).ready(function() { }
是否有可能尚未完全加载DOM?
我正在使用一些3 rd 派对工具(Telerik的网格),并设置了一个客户端模板来显示一个复选框,就像this一样。代码:
.ClientTemplate("<input type='checkbox' name='checkedRecords' value='<#= OrderID #>' />")
我问的原因是我试图将事件连接到所有复选框以监控change
:
$(':input').change(
function () {
alert('you fired!');
});
我在Telerik网格代码之外手动设置了一个复选框,它连接到复选框更改,但telerik网格内的所有复选框都没有...
在那种情况下 - 是否有解决方法?
答案 0 :(得分:8)
尝试使用live,
$(':input').live('change', function() {
alert('you fired!');
});
修改强>
.live()已弃用于1.7版本,自版本1.9起被删除: 而是实时使用on()
答案 1 :(得分:5)
HTML页面中静态定义的DOM不可能在$(document).ready()
处加载。但是,如果您使用的是动态加载或创建HTML的第三方库,则无法保证库在$(document).ready()
时已完成业务。事实上,它很可能没有。
您有几个选择:
.live()
功能捕获甚至在您指定要连接它们时尚不存在的DOM对象的事件。您可以在此处阅读.live()
:http://api.jquery.com/live/。它的工作方式大致类似于普通的事件处理程序,只是它只适用于某些事件,并且在如何阻止传播方面存在一些差异。