关于jquery集合/ domRef的Jquery委托但是选择器字符串

时间:2013-01-02 20:42:53

标签: javascript jquery

我有一个场景,我有dom元素的实际dom引用,并希望将事件委托给该dom引用。

var domRef = $('.selector');
// I want something like this.
$(document).on('click', domRef, function() {

});

我知道在上面的代码中以这种方式使用它是没有意义的,但我有一个用于我自己需要这种功能的用例。我很感激能为我提供解决方案,而不会就遵循这种做法的原因进行辩论。

2 个答案:

答案 0 :(得分:2)

只需手动处理委派:

var domRef = $('.selector');

$(document).on('click', function(e) {
    // test if the click target is the same as your domRef
    if ($(e.target).is(domRef)) {
        // do special stuff for this node
    }
});

答案 1 :(得分:1)

来自.on()的文档。

  

<强> .on( events [, selector] [, data], handler(eventObject) )

     

selector:选择器字符串,用于过滤触发事件的所选元素的后代。如果选择器为null或省略,则事件始终在到达所选元素时触发。

selector需要是一个字符串。如果不是那么它被认为是参数data。您可以确认此by looking at .on()'s source code.

解决方法可能是这样的:

var $domRef = $('.selector');

$(document).on('click', function(evt) {
  if($domRef.is(evt.target)) {
    ...
  }
});

尽管表现不太好。