javascript 点击事件执行两次js问题

因为利用js在页面加载后添加需要点击事件的代码,发现在点击后会代码会执行两次,因为有toggle效果,导致弹窗出现又很快丢失

查了一些资料,发现这是冒泡的原因,需要在点击事件代码中加入阻止冒泡的方法:

e.stopPropagation();

但是发现还是不行

后面查到,off函数可以解除由on函数所绑定的事件,所以在js代码中on函数前调用下Off函数,就正常了:

$("li.taskli").off('click','a').on('click','a',function(e){ //在on绑定前调用off去除绑定
    //$(document).on('click','li.taskli a',function(e) {  //原先的写法
        console.log("here")
        if ($(this).parent().find('div.popover').size()>0)
        {
            $(this).popover('destroy')
        }else{        
            var uuid = $(this).attr('targetuuid');
            var taskhtml = '
' + popheadDivHtml()+'
'; $(this).popover({ placement:'bottom', title:uuid, html:'true', content:taskhtml }).popover('toggle'); getResultFromFile(uuid) } e.stopPropagation(); //阻止冒泡 })


你可能感兴趣的:(js,django)