首先,我要说的是我使用的是旧版本的jQuery库(即1.4.2)。更新到jQuery 1.7需要一些时间(特别是要查找错误),所以我正在寻找一种适用于1.4.2的解决方案。
我想写一个函数:
function _setupGui($domNode, selector){
$domNode
.delegate(selector, 'mouseenter', function(){ /* do smth awesome */ }
.delegate(selector, 'mouseleave', function(){ /* do smth awesome */ }
.delegate(selector, 'click', function(){ /* do smth awesome */ }
}
并且能够给出一个允许选择“自我”的选择器。
是否有一个选择器,你可以传递给委托,它允许选择持有委托的节点?
在jQuery 1.7中,$domNode.on('click', null, function(){/*handler*/})
就是这样做的,并且是$domNode.delegate(null, 'click', function(){/*handler*/})
的实际实现。
但是,在1.4.2中,后者什么都不做。
这是与先前版本的语义变化吗?
答案 0 :(得分:1)
我认为您真正想要的是直接将处理程序附加到元素上,而根本不使用delegate
。你可以自己处理。也许这样的事情,传递“自我”意味着只附上事件:
function _setupGui($domNode, selector){
if(selector == "self"){
$domNode
.mouseenter(function(){ /* do smth awesome */ })
.mouseleave(function(){ /* do smth awesome */ })
.click(function(){ /* do smth awesome */ })
}else{
$domNode
.delegate(selector, 'mouseenter', function(){ /* do smth awesome */ })
.delegate(selector, 'mouseleave', function(){ /* do smth awesome */ })
.delegate(selector, 'click', function(){ /* do smth awesome */ })
}
}