防止点击多次点击

时间:2015-06-30 02:40:44

标签: javascript jquery json click

数据是通过JSON动态加载的,所以我必须使用.on来加载.target,因为有很多targets,我必须在$.getJSON内做一些事情,所以它有几个点击处理程序。

$('.container').on('click', '.target', function(e) {
    e.preventDefault();

    $.getJSON(myData, function(data, status) {
        $('.another-element').on('click', 'a', function(e) {
            e.preventDefault();
        });
    }

});

....问题是,当点击.another-element时,它还会触发.target的click事件,导致其中的所有函数重新出现。我该如何预防?

1 个答案:

答案 0 :(得分:4)

假设.another-element.target的孩子,请使用

停止传播
e.stopPropagation();

event.stopPropagation()

中所述
  

阻止事件冒泡DOM树,防止任何父处理程序收到事件通知。

<强>更新

  

不,它不是孩子。一个单独的元素(兄弟)叠加在顶部。

您可以尝试检查目标

$('.container').on('click', '.target', function(e) {
    if(e.target.classList.toString().indexOf('target') == -1){
        return;
    }
    e.preventDefault();

    $.getJSON(myData, function(data, status) {
        $('.another-element').on('click', 'a', function(e) {
            if(e.target.tagName != 'A'){
                return;
            }
            e.preventDefault();
        });
    }

});