我对jquery的Delegate函数如何工作感到有些困惑。
如果我有一个名为picker的变量,其中包含。
这个变量包含一个div, 而这又包含未知数量的跨度。
我希望在每个范围内部选择器div上设置一些点击处理程序。
代表是最好的方法吗?
如果是这样,我该怎么做?
答案 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
});