如何为委派选择器和直接选择器编写更短的事件?

时间:2017-08-14 11:56:51

标签: jquery events event-listener

是否有更好更清洁的方法来编写这些jQuery事件?

$(".class").on("click", function(e){
    e.preventDefault();
    functionTest();
});

$("#selector").on("click", ".class", function(e){
    e.preventDefault();
    functionTest();

});

我正在考虑以下内容,但我知道它绝对不是合适的方式:

$("#selector, .class").on("click", ".class", function(e){
    e.preventDefault();
    functionTest();

});

关于html结构,我有:

<div>
<a href="" class=".class">button</a>
</div>

<div id="#selector">
<!-- Dynamically generated html -->
<a href="" class=".class" id="id1">button</a>
<a href="" class=".class" id="id2">button</a>
<a href="" class=".class" id="id3">button</a>
<!-- Dynamically generated html -->
</div>

1 个答案:

答案 0 :(得分:1)

假设所有`https://jsfiddle.net/BalakrishnanE/19z7rd1h/#&togetherjs=NwAKHyPv9G` 元素都是.class的子元素,那么您可以使用单个委托事件处理程序:

#selector

如果不是这种情况,那么您可能需要使用两个单独的事件处理程序,如第一个示例所示。