使用dom代替选择器的Jquery委托

时间:2016-02-22 10:10:19

标签: jquery


我曾经使用.on如下:

$( elements ).on( events, selector, data, handler );
=> 
$div=$('<div />');
$div.on('click',fn(){...});

但是对于代表我们有:

$( elements ).delegate( selector, events, data, handler );

$div.delegate...

不起作用! 在这种情况下,我没有选择器,只有Dom。我该怎么办? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

selector只能是一个字符串。要使用DOM元素或jq匹配集,您可以在处理程序中过滤它,例如:

$( document).on( "click", null, data, handler );

//later
var $div=$('<div />');

function handler(event){
   if($(event.target).closest($div).length)
     //do some stuff
}

&#13;
&#13;
$(document).on("click", null, {
  data: "some data"
}, handler);

//later
var $div = $('<div />').html('the DIV to call handler');
$div.appendTo('body');

function handler(event) {
  if ($(event.target).closest($div).length) {
    //do some stuff   
    alert('handler call for the DIV');
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
  other div, no click event bound
</div>
&#13;
&#13;
&#13;