jQuery:委托给自己?

时间:2011-12-15 18:00:43

标签: jquery jquery-1.4

首先,我要说的是我使用的是旧版本的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中,后者什么都不做。

这是与先前版本的语义变化吗?

1 个答案:

答案 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 */ })
    }
}