我正在尝试将某些点击处理程序等绑定到动态加载的元素。我添加这些处理程序的钩子是元素的“就绪”事件。但是,我发现当我附加点击处理程序时,元素是未定义的。以下警报如何显示“0”?
<script language="javascript">
$('#widget').ready(function(){
alert($('#widget').length);
});
</script>
编辑:
我实际上使所描述的情况尽可能简单。事实上,它稍微复杂一点,因为我实际上想要将事件附加到#widget中包含的元素。我真正想要的是确定#widget何时完成加载的可靠方法,以便我可以访问其中的项目。
答案 0 :(得分:3)
除了ready()
之外,我认为你不能致电document
。
如果要将处理程序附加到尚未在DOM中的元素,请使用live()
绑定它们或将事件处理程序附加到一致父项,并在事件冒泡时检查which.target
(几乎live()
的作用。
答案 1 :(得分:2)
看一下jQuery的live
method。它为事件附加了一个处理程序,用于匹配当前选择器的所有元素,现在和将来。
$('#widget').live('click', function() {
alert('#widget clicked');
});
因此,当新元素添加到ID为#widget
的文档中时,它们将获得点击处理程序。