亲宝软件园·资讯

展开

动态添加的元素,绑定事件后点击一次触发多次问题

念初~逝水 人气:1

使用js动态添加的元素,在html中写好的绑定事件不可用,可用以下方式触发

动态添加多个的html元素
addCell:function () {
var cell = '<div>\n' +
' <button type="button" class="btn btn-default delCell" @click="delCell">新增</button>\n' +
' </div>';
$('.addCell').before(cell)
}

此时调用addCell方法无效,只能通过dom绑定,此时方法可正常触发

$('body').on('click','.delCell',function () {
    event.stopPropagation();//阻止事件冒泡到父元素,阻止任何父事件处理程序被执行
    $(this).parent().remove();
});

部分页面会出现新的问题,若方法中需要调用接口会发现点击一次接口被多次调用,出现这种问题是事件多次绑定导致,可在绑定事件前解绑元素

$(".delCell").unbind('click').click(function(){});
$('body').on('click','.delCell',function () {
    event.stopPropagation();//阻止事件冒泡到父元素,阻止任何父事件处理程序被执行
    $(this).parent().remove();
});

若添加解绑事件扔会出现重复触发现象,可用闭包实现,闭包可以保存变量

for(var i=0;i<$(".delCell").length;i++){
    (function(i){
        $(".delCell")[i].onclick=function(){
            event.stopPropagation();
            $(this).parent().remove();
        }
    })(i);
}

 

 

 

 

 

 

加载全部内容

相关教程
猜你喜欢
用户评论