我已经在基于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) };
};
});
Run Code Online (Sandbox Code Playgroud)
};
谢谢您的帮助,不胜感激
将鼠标事件放在 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) };
};
});
});
Run Code Online (Sandbox Code Playgroud)