jQuery的这种情况怎么可能?

时间:2011-05-13 02:23:02

标签: jquery jquery-selectors

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

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

编辑:

我实际上使所描述的情况尽可能简单。事实上,它稍微复杂一点,因为我实际上想要将事件附加到#widget中包含的元素。我真正想要的是确定#widget何时完成加载的可靠方法,以便我可以访问其中的项目。

2 个答案:

答案 0 :(得分:3)

除了ready()之外,我认为你不能致电document

如果要将处理程序附加到尚未在DOM中的元素,请使用live()绑定它们或将事件处理程序附加到一致父项,并在事件冒泡时检查which.target(几乎live()的作用。

答案 1 :(得分:2)

看一下jQuery的live method。它为事件附加了一个处理程序,用于匹配当前选择器的所有元素,现在和将来

$('#widget').live('click', function() {
  alert('#widget clicked');
});

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