2010-05-28 49 views
1

我已经在我的基于jQuery的网站中使用了以下JavaScript。它的作用是向上/向下移动滑块,并将项目缩放到更高/更小的位置。全球鼠标移动

一切工作正常,但由于滑块只有几个像素的高度,移动事件有点慢(它不会触发每个像素),所以当我快速移动鼠标时,滑块不能等待,鼠标离开滑块项目。 mouseMove事件不会被触发,因为它被绑定到滑块。我想所有的东西都可以通过将mouseMove全局设置为整个网站来解决,但它不起作用,或者至少我不知道如何做到这一点。它是否应该受到文件或身体的约束?

这里是我的滑块当前代码:

$.fn.resize = function (itemToResize) { 

MinSize = 100; 
MaxSize = 800; 

pageYstart = 0; 
sliderMoveing = false; 
nuskriverHeight = 0; 

this.mousedown(function(e) { 
pageYstart=e.pageY; 
sliderMoveing = true 
nuskriverHeight = parseFloat((itemToResize).css('height')); 
}); 

this.mouseup(function() { 
sliderMoveing = false 
}); 

this.mousemove(function(e) { 
if (sliderMoveing) { 
    (itemToResize).css('height', (nuskriverHeight + (e.pageY - pageYstart))); 
    if (parseFloat((itemToResize).css('height')) > MaxSize) { (itemToResize).css('height', MaxSize) }; 
    if (parseFloat((itemToResize).css('height')) < MinSize) { (itemToResize).css('height', MinSize) }; 
}; 
}); 

};

感谢您的帮助,非常感谢

回答

1

放在document

var $doc = $(document); 

this.mousedown(function(e) { 
    pageYstart=e.pageY; 
    sliderMoveing = true 
    nuskriverHeight = parseFloat((itemToResize).css('height')); 

    $doc.mouseup(function() { 
    sliderMoveing = false ; 
    $doc.unbind('mousemove mouseup') 
    }); 

    $doc.mousemove(function(e) { 
    if (sliderMoveing) { 
    (itemToResize).css('height', (nuskriverHeight + (e.pageY - pageYstart))); 
    if (parseFloat((itemToResize).css('height')) > MaxSize) { (itemToResize).css('height', MaxSize) }; 
    if (parseFloat((itemToResize).css('height')) < MinSize) { (itemToResize).css('height', MinSize) }; 
    }; 
    }); 

}); 
+0

这奏效了,谢谢:)其实,这解释了很多事情不仅仅是这一特定问题更适合我:d谢谢您! – 2010-05-28 13:30:11

+0

但是,如果元素或其父母之一调用'stopPropagation()'?在任何情况下,有没有办法在全局触发'onmousemove'事件(对于'document'或'window')而不使用定时器? – StanE 2017-10-21 09:21:50

0

鼠标事件通常是你观看mousedown上的滑块(开始拖动),而当你拖动你注意mousemovemouseup(和keypress,如果你想允许Esc取消等)document的任何地方。

1

mousedown,不应该将事件处理程序(在document)绑定到mousemovemouseup

在mouseup处理程序中,应该再次断开两个全局处理程序。


但是,它可能是简单的使用jQuery的可拖动的UI:http://jqueryui.com/demos/draggable/