jquery – 多个元素的单击处理程序?

前端之家收集整理的这篇文章主要介绍了jquery – 多个元素的单击处理程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一个点击处理程序添加到一个div.但是有没有办法使用单个点击处理函数并在多个div之间共享?由于我可能有100个div,我不想为每个div创建一个点击处理程序(他们几乎都会做同样的事情). jquery示例显示
$("p").click(function () { 
    $(this).foo(); 
});

我们可以做一些像:

$("p").click(myClickHandler);

function myClickHandler(source) {
    source.foo();
}

解决方法

如果不想要数百个点击事件的开销,jQuery的.delegate()方法是一个很好的方法.

它将一个事件分配给容器,当容器的指定后代获取事件时,该容器将被触发.

测试示例:https://jsfiddle.net/jYKgm/210/

HTML

<div id="container">  // #container has the event handler assigned
    <div>content</div>
    <div>content</div>
    <div>content</div>
    <div>content</div>
    <div>content</div>
    <div>content</div>
</div>​

jQuery的

// The click event handler will fire when <div> elements  
   //   that descend from #container get clicked.
$('#container').delegate('div','click',function() {
    alert('index ' + $(this).index() + ' was clicked');
});

这将为#container元素分配一个处理程序,并使其成为任何后代的div元素将触发处理程序.

所以如果有500个后代的div元素,他们将共享一个事件处理程序.

– .delegate() – http://api.jquery.com/delegate

猜你在找的jQuery相关文章