jQuery委托

时间:2010-12-03 02:48:03

标签: jquery delegates

我对jquery的Delegate函数如何工作感到有些困惑。

如果我有一个名为picker的变量,其中包含。

这个变量包含一个div, 而这又包含未知数量的跨度。

我希望在每个范围内部选择器div上设置一些点击处理程序。

代表是最好的方法吗?

如果是这样,我该怎么做?

3 个答案:

答案 0 :(得分:4)

所以我假设选择器看起来像这样:

var picker = $("div.someDiv");

并且您希望使用span将点击处理程序附加到div.someDiv的子节点的所有.delegate()元素。

以下是我如何去做的事情:

picker.delegate("span", "click", function(eventObj) {
    // do what you want
});

.delegate()通过利用大多数DOM事件冒泡或传播这一事实而发挥作用。在这方面,.delegate().live()非常相似。 .delegate()不同之处在于,不是仅仅在文档根目录中附加处理程序,而是在事件一直冒泡时触发处理程序,它会将事件附加到传递给$()的元素,然后观察从该元素的孩子们冒出的事件。

答案 1 :(得分:2)

是的,你应该可以这样做:

picker.delegate("span", "click", function() {
     // do something to $(this) here!
});

答案 2 :(得分:0)

有什么问题
$("#picker span").click(function(){
    //I was clicked
});