Jquery仅为子对象覆盖'click'事件

时间:2017-05-18 08:24:23

标签: javascript jquery

我有这个:

$('.parent').on('click', '.child1', function(event) {
// do whatever
});

$('.parent').on('click', '.child2', function(event) {
// do whatever
});

这很有效,即使两个“点击”事件都归属于父级,它也不会覆盖。现在该函数在我的页面上运行多次,效果与此相同:

$('.parent').on('click', '.child1', function(event) {
// do whatever
});

$('.parent').on('click', '.child1', function(event) {
// do whatever
});

当运行两次时,事件不会覆盖,而是添加。所以我会在每次点击时运行2次。不是我想要的行为(只有1次执行),以阻止他们复制事件,我通常会这样做:

$('.parent').off('click').on('click', '.child1', function(event) {
// do whatever
});

$('.parent').off('click').on('click', '.child2', function(event) {
// do whatever
});

在这种情况下,第二个.off('click')会从.child1和覆盖中删除单击,即使第二个只与.child2相关而不是.child1。换句话说,即使两个事件都对.parent的单独子项的点击起作用,如果我使用'off'技术,它们也会覆盖。

我的问题是:如何仅为一个特定的子项覆盖一个事件,这样如果我运行两次相同的声明,它就不会复制该事件?

PS:我不能做$('。child')。click()因为孩子是动态加载的,所以我需要在静态.parent上附加事件。

1 个答案:

答案 0 :(得分:1)

希望这会有所帮助:

$(document).off('click','.parent').on('click', '.child1', function(event) {
    alert("click1");
});

$(document).off('click','.parent').on('click', '.child2', function(event) {
alert("click2");
});