成功获取数据后,事件单击会多次触发

时间:2015-05-20 13:46:41

标签: javascript jquery

我有这样简单的脚本:

(function($) {
    $(document).ready(function() {
        function getData() {
            $.ajax({
                url: '/path/to/file',
                type: 'GET',
                dataType: 'json',
                success: function(response) {
                    var text = response.jsontitle;

                    $('#link').attr('class', '');
                    $('#link').attr('class', text);

                    // Second, Third, Fourth .... after get data
                    // Click fires 2, 3, 4 .... after get data
                    $('#link').on('click', function() {
                        console.log($(this).attr('class'));
                    })
                }
            });
        }

        var refreshData = setInterval(getData, 5000);

        getData();
    });
})(jQuery);

我希望每个时间间隔只发生一次click事件。但是,当前点击事件发生的次数与getData()一样多。

例如,如果getData()出现两次,那么点击事件也会发生两次。

1 个答案:

答案 0 :(得分:6)

首先解除unbind事件然后绑定,如果你想使用内部成功回调函数

$('#link').off('click').on('click'....

或者更好地在回调函数之外绑定事件