我很好奇,如果多次将一个事件绑定到一个对象会导致问题,方法是将多个事件监听器堆叠在一起或者它们是否相互覆盖?例如,如果我有一个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事件。因此,这样做是否正常,并且每次都会覆盖事件处理程序,还是必须首先取消绑定处理程序才能重新绑定?