为什么要调用两次API?

时间:2015-02-18 10:08:03

标签: jquery

我有一个img元素列表,每个元素都有一个带有X的跨度,用于删除指定的图像。对于双重检查,每当用户点击X我显示模式以获得确认。执行此操作的功能如下:

function refresh() {
            $('#deleteImg .btn-primary').click(function () {
                var src = $(this).data('src');
                var elem = $(this).data('elem');
                $.post('/api/deleteimage', {src: src}, function () {
                    elem.remove();
                    $('#deleteImg').modal('hide');
                })
            })
        }


function refreshImages() {
            $('.img-wrap .close').click(function (ev) {
                refresh()
                var src = $(this).closest('.img-wrap').find('img').attr('src');
                var elem = $(this).closest('.img-wrap');
                $('#deleteImg').modal('show').find('.btn-primary').data('src', src).data('elem', elem);
                refresh();
            })
        }

它运行良好但是deleteimage API被调用了两次,为什么会这样?

2 个答案:

答案 0 :(得分:0)

我发现我应该调用stopPropagation方法。

答案 1 :(得分:0)

每次拨打refresh()时,都会将点击事件绑定到$('#deleteImg .btn-primary')。这是附加的,所以如果你绑定它两次然后点击一次,点击功能将被触发两次。 Aaaaand你在refresh()两次致电refreshImages() ......可能不是巧合:)