大家好,我有这个代码正常工作,但我希望脚本停止鼠标注册事件。
这是我现在拥有的一个例子。 如何在鼠标向上事件上停止脚本,使其看起来只显示拖动图像时的坐标。
谢谢!
$(document).ready(function () {
$("#map-catcher").mousedown(function (e) {
$("#map-catcher").mousemove(function (e) {
$("#coord").text("x:"+e.offsetX+", y:"+e.offsetY);
return;
});
$("#map-catcher").mouseup(function (e) {
return;
});
});
});
答案 0 :(得分:3)
使用mousemove事件参数
我认为最简单的方法是检查mousemove事件的事件参数,你应该能够确定鼠标按钮是否关闭......
$(document).ready(function () {
$("#map-catcher").mousemove(function (e) {
if (e.which == 1) {
$("#coord").text("x:" + e.offsetX + ", y:" + e.offsetY);
}
});
}
注意:我不是百分百确定此方法的跨浏览器兼容性(在Chrome中测试)
使用全球旗帜
如果这不能按照你想要的方式工作,你可以尝试使用一个全局标志来跟踪鼠标当前是否有电流......
var moveMode = false;
$(document).ready(function () {
$("#map-catcher").mousedown(function (e) {
moveMode = true;
});
$("#map-catcher").mousemove(function (e) {
//only set the coordinates when the flag is true
if (moveMode) {
$("#coord").text("x:" + e.offsetX + ", y:" + e.offsetY);
}
});
$("#map-catcher").mouseup(function (e) {
moveMode = false;
});
});
注意:如果将鼠标放在"#map-catcher"
元素之外,这可能会导致一些错误效果。将mouseup
事件更改为document
级别可能是个好主意。像这样:
$(document).mouseup(function (e) {
moveMode = false;
});
答案 1 :(得分:0)
将您的事件绑定从mousedown处理程序中取出。此外,使用.on()语法,如果我是你,我会使用mousedown和mouseup来添加和删除一个绑定到mousemove的类。
$('parent').on('mousedown', 'element', function(){
$(this).addClass('active');
});
$('parent').on('mouseup','element', function(){
$(this).removeClass('active');
});
$('parent').on('mousedown','element.active', function(){
$(this).goCrazy();
});