jQuery的这种情况如何可能?

jQuery的这种情况如何可能?,jquery,jquery-selectors,Jquery,Jquery Selectors,我正在尝试将某些单击处理程序等绑定到动态加载的元素。我添加这些处理程序的钩子是元素的“ready”事件。但是,我发现当我附加click处理程序时,元素是未定义的。以下警报如何显示“0” <script language="javascript"> $('#widget').ready(function(){ alert($('#widget').length); }); </script> $('#widget').ready(函数(){ 警报($

我正在尝试将某些单击处理程序等绑定到动态加载的元素。我添加这些处理程序的钩子是元素的“ready”事件。但是,我发现当我附加click处理程序时,元素是未定义的。以下警报如何显示“0”

<script language="javascript">
  $('#widget').ready(function(){
      alert($('#widget').length);
  });
</script>

$('#widget').ready(函数(){
警报($('#widget').length);
});
编辑:

事实上,我尽可能地简化了所描述的情况。事实上,它稍微复杂一些,因为我实际上想将事件附加到#widget中包含的元素。我真正想要的是一种可靠的方法来确定小部件何时完成加载,这样我就可以访问其中的项目。

看看jQuery的。它为当前和将来匹配当前选择器的所有元素的事件附加一个处理程序

因此,当向文档中添加ID为
#widget
的新元素时,它们将获得单击处理程序。

看看jQuery的。它为当前和将来匹配当前选择器的所有元素的事件附加一个处理程序


因此,当向文档中添加ID为
#widget
的新元素时,它们将获得单击处理程序。

我认为除了
文档
之外,您不能调用
ready()


如果您想将处理程序附加到尚不在DOM中的元素,请使用
live()
将它们绑定,或将事件处理程序附加到一致的父级,并在事件冒泡时检查
哪个.target
(与
live()
所做的差不多)。

我认为您不能调用
ready()
除了
文档
之外的任何内容


如果要将处理程序附加到DOM中尚未包含的元素,请使用
live()
绑定它们,或将事件处理程序附加到一致的父级,并在事件冒泡时检查
which.target
(与
live()
所做的差不多)。

谢谢,我已将我的问题编辑得更清楚(希望如此)。谢谢,我把我的问题编辑得更清楚了(希望如此)。什么样的元素是
#widget
?它是一个div-只是一个其他元素的容器elements@Paul没有
div的
load
事件。您只能将
load
事件附加到
img
窗口
。您可能需要通用的
$(document).ready(function(){…})
@Paul Nope,据我所知,
div
上没有
ready
。你在等什么呢?图像已加载,或者它正准备进行操作?@Paul我需要查看所有代码才能告诉你。什么样的元素是
#widget
?它是一个div-只是一个其他元素的容器elements@Paul没有
div的
load
事件。您只能将
load
事件附加到
img
窗口
。您可能需要通用的
$(document).ready(function(){…})
@Paul Nope,据我所知,
div
上没有
ready
。你在等什么呢?图像加载了,还是只是准备进行操作?@Paul我需要查看所有代码才能告诉你这一点。
$('#widget').live('click', function() {
  alert('#widget clicked');
});