Jquery删除旧函数和单击处理程序

时间:2016-01-16 22:53:34

标签: jquery

我有一个带有按钮的页面,可以加载模态。

在这个模态中我显示数据。

该数据可以例如由某个表的5个条目组成 删除条目后,将刷新数据。添加条目时也是如此。

现在,当我通过点击它以外的方式关闭模态并重新打开它。附加到第一个模态的函数仍然存在并触发。 所以,如果我添加一个条目。执行此操作的ajax和脚本会被触发/调用两次。

代码:

            $(document).on('click','.remove_team',function(){
                var tournament_id = $(this).data('tourn');
                $.ajax({
                    url :'./organisations/waiting_list/team_assignement.php',
                    type :'POST',
                    data : {
                        action : 'remove_team',
                        team_id : $(this).data('team'),
                        tourn : $(this).data('tourn')
                    },
                    success : function(){
                        LoadParticipantList(tournament_id);
                    }
                })
            })
            function LoadParticipantList(tournament){
                $.ajax({
                    url :'./organisations/waiting_list/team_assignement.php',
                    type :'POST',
                    data : {
                        action :'fetch_team_participants',
                        tournament : tournament
                    },success : function(res){
                        res = jQuery.parseJSON(res);        
                        $("#counter_"+tournament).html(res.count);              
                        $("#div_"+tournament).html(res.teams);
                    }
                })
            }

删除点击处理程序然后再直接添加以便ajax触发的正确方法是什么?

3 个答案:

答案 0 :(得分:0)

我猜可能会使用unbind,sample:

$("#foo").unbind( "click" );

http://api.jquery.com/unbind/

答案 1 :(得分:0)

您可以做的是在模态弹出窗口外添加点击事件。此次点击活动会停止您不想要的治疗......

$('documents').bind('click', function(e) {
    if($(e.target).closest('#your_modal_id').length == 0) {
        //click happened outside the modal popup : stopping treatments
    }
});

还会添加一个停止传播事件,以避免不必要的治疗...

$('#your_modal_id').click(function(event){
 event.stopPropagation();
});

希望有所帮助

答案 2 :(得分:0)

jQuery .off方法将完成这项工作。