我有这个:
$('.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上附加事件。
答案 0 :(得分:1)
希望这会有所帮助:
$(document).off('click','.parent').on('click', '.child1', function(event) {
alert("click1");
});
$(document).off('click','.parent').on('click', '.child2', function(event) {
alert("click2");
});