1

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

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

4

1 回答 1

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 */ })
    }
}
于 2011-12-15T18:10:38.703 回答