JavaScript事件处理程序会被覆盖吗?

时间:2014-07-21 23:36:06

标签: javascript jquery

我很好奇,如果多次将一个事件绑定到一个对象会导致问题,方法是将多个事件监听器堆叠在一起或者它们是否相互覆盖?例如,如果我有一个attachHandlers函数

function _attachHandlers() {

            // Slider hover
            var isDown = false;
            $('.ui-slider-handle').mousedown(function () {
                // Create tool tip
                isDown = true;

                var tt = $(document.createElement('span')).addClass('sk-tooltip');
                var handle = $(this);

                var left = parseInt(handle.css('left'));

                var val = _convertSliderValue(Math.round(left / 5 / 14.2857));
                tt.text(val);

                handle.append(tt);

                var newLeft = (handle.outerWidth() - tt.outerWidth()) / 2;
                tt.css({
                    'left': newLeft
                });


                $(document).mousemove(function (event) {
                    var left = parseInt(handle.css('left'));

                    var val = _convertSliderValue(Math.round(left / 5 / 14.2857));
                    tt.text(val);

                    var newLeft = (handle.outerWidth() - tt.outerWidth()) / 2;
                    tt.css({
                        'left': newLeft
                    });
                });

            });

            $(document).mouseup(function () {
                if (isDown) {
                    $(document).unbind('mousemove');

                    $(this).find('.sk-tooltip').remove()
                    isDown = false;
                }

            });
        }

我需要在我的代码中的某个位置重新附加这些处理程序,因此我只是要调用_attachHandlers()来重新绑定它们,但是,我也将重新绑定{{1}每次发生这种情况时,都会监听mouseup事件。因此,这样做是否正常,并且每次都会覆盖事件处理程序,还是必须首先取消绑定处理程序才能重新绑定?

0 个答案:

没有答案