我有这样的元素,其动画上的mouseup功能,但现在,它的工作原理为左都和右按钮.有没有办法只使用左按钮?
$(document).ready(function() {
$("div").mouseup(function() {
top: "-101%"
});
});
Run Code Online (Sandbox Code Playgroud) 以下代码示例让我感到困惑.这是我可以用来演示我的问题的更大代码的最简单版本.基本上我希望用户能够通过按住鼠标键并拖动它来绘制边界框.
如果我使用mouseMove函数中的setBounds重绘rectange,我从未看到mouseUp事件!如果我在mouseMove函数中禁用重绘矩形,我会得到mouseUp事件.我可以通过在mouseUp事件中绘制矩形来部分解决这个问题,但是当用户拖动框时,用户无法看到轮廓.
您可以在http://www.geoffschultz.org/Test/bounding_box.html上查看此代码示例
这是代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#mapdiv { height: 100% }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var map, mouseDownPos, gribBoundingBox = "", mouseIsDown = 0;
function display_map()
{
var latlng = new google.maps.LatLng(42, -71);
var myOptions = {zoom: 8, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP};
map = new google.maps.Map(document.getElementById("mapdiv"), myOptions);
google.maps.event.addListener(map,'mousemove',function(event) {mouseMove(event);});
google.maps.event.addListener(map,'mousedown',function(event) {mouseDown(event);});
google.maps.event.addListener(map,'mouseup',function(event) {mouseUp(event);}); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个非常简单的应用程序,用户可以在按下鼠标按钮时将其绘制到具有选定颜色的表中,而在鼠标按下时事件将停止。
绘图效果很好,唯一的问题是释放鼠标时事件不会停止。我已经尝试了很多方法,但是显然我做错了。还尝试绑定和取消绑定该事件,但也没有起作用。
您可以在此处查看该代码的一种版本:http : //jsfiddle.net/mFzkG/8/
任何帮助,不胜感激!
当你mousedown在图像上,mousemove稍微移动鼠标()然后释放(mouseup),mouseup不用jQuery触发.
jsfiddle:http://jsfiddle.net/kVFTZ/
为什么是这样?如何在移动图像时使其工作?
我创建了一个带有独特边框样式的 div 的自定义按钮。我正在尝试处理“鼠标按下”以切换边框颜色以产生缩进的错觉。然后处理“mouseup”以切换回默认值。
问题是当鼠标离开按钮并且“mouseup”被触发时,它不再由 div 处理。我尝试拦截“mouseleave”,我尝试添加点击时的数据属性(不会更新),我尝试添加一个名为“imclicked”的带有 .addClass 的临时类(无法让它工作) .
我真的很挣扎。
到目前为止,这是我的代码:
function ToggleBorder() {
// Get Border Colours
//-----------------------------------
var top = $(this).css("borderTopColor"),
right = $(this).css("borderRightColor"),
bottom = $(this).css("borderBottomColor"),
left = $(this).css("borderLeftColor");
// Assign new Colours
//-----------------------------------
$(this).css("borderTopColor", bottom);
$(this).css("borderLeftColor", right);
$(this).css("borderBottomColor", top);
$(this).css("borderRightColor", left);
}
$(".main-nav-button").mousedown(ToggleBorder);
$(".main-nav-button").mouseup(ToggleBorder);
$(".main-nav-button").mouseleave(function() {
// test for mousedown
});
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能切换回 mouseleave 的默认边框?
只是好奇mousedown和mouseup事件的用途,因为它们也在触摸设备上触发。我认为mousedown和touchstart是互斥的(前者在桌面上工作,后者在触摸设备上工作),并且mouseup和touchend相同,但情况似乎并非如此。一次完整的触摸事件会触发上述所有事件:在 safari 和 chrome 上测试。因此,为了区分单击(鼠标)事件和单击(触摸)事件,我需要使用某种函数来告诉我这是否是触摸设备:
function isTouchDevice() {
return 'ontouchstart' in window // works on most browsers
|| navigator.maxTouchPoints; // works on IE10/11 and Surface
}
myElem.addEventListener("mousedown", () => {
if (isTouchDevice()) return;
// do something
}, false);
myElem.addEventListener("mouseup", () => {
if (isTouchDevice()) return;
// do something
}, false);
myElem.addEventListener("touchstart", () => {
// do something
}, false);
myElem.addEventListener("touchend", () => {
// do something
}, false);
Run Code Online (Sandbox Code Playgroud)
我是否真的需要检查设备是否为触摸设备以区分鼠标单击和触摸单击?
我有一个jquery 排序插件,它工作得很好,但是如果我做很少的拖动操作,mouseup事件就会开始很慢。触发事件大约需要 1 秒。如果我转储 mousemove 事件的结束,它会立即停止,但 mouseup 事件会在第二个之后开始。我为代码中的每个方法添加了 console.log() ,但在拖动停止和鼠标向上之间没有调用。可能是什么问题呢?如何在浏览器中调试可能的并行进程?代码如下:
....
state.doc
.on( 'mousemove', dragging )
.on( 'mouseup', endDrag );
}
/**
* @desc Start dragging
* @param e event obj.
*/
function dragging( e )
{
...
console.log('dragging end');
}
function endDrag( e )
{
var cEl = state.cEl,
hintNode = $( '#sortableListsHint', state.rootEl.el ),
hintStyle = hint[0].style,
targetEl = null, // hintNode/placeholderNode
isHintTarget = false, // if cEl will be placed to the hintNode …Run Code Online (Sandbox Code Playgroud) var mouseStillDown = false;
$(".grab").mousedown(function(e) {
mouseStillDown=true;
getLocation();
}).mouseup(function(e) {
mouseStillDown = false;
getLocation();
});
if(mouseStillDown) {
$("#image_360").bind("mousemove", function(e){
$("#location").text("e.pageX: " + e.pageX + ", e.pageY: " + e.pageY);
});
}
else if(!mouseStillDown) {
$("#image_360").unbind("mousemove", function(e){
$("#location").text("removed location");
});
}
Run Code Online (Sandbox Code Playgroud)
即使我没有绑定的mousemove,我仍然会在div上看到带有pageX和pageY的文本 id=location
我有一个自定义NSView子类(例如)以下方法:
override func mouseDown(with event: NSEvent) { Swift.print("mouseDown") }
override func mouseDragged(with event: NSEvent) { Swift.print("mouseDragged") }
override func mouseUp(with event: NSEvent) { Swift.print("mouseUp") }
Run Code Online (Sandbox Code Playgroud)
只要按下鼠标(按钮),拖动并释放所有视图内部,这都可以正常工作.但是,当在视图内按下鼠标时,移动到视图外,然后才释放,我从未收到过该mouseUp事件.
PS:调用super实现没有帮助.
在我的Windows窗体应用程序中,如果单击其中一个项目,我必须打开一个带有特定文件夹的新资源管理器窗口.我正在侦听MouseUp事件(因为我已经有一些点击检测,我需要点击坐标),如果我打开一个新的资源管理器窗口
private void listView1_MouseUp(object sender, MouseEventArgs e)
{
Process.Start(@"C:\");
}
Run Code Online (Sandbox Code Playgroud)
它会两次打开资源管理器窗口.它肯定与之有关,Process.Start(@"C:\");因为当我将线路切换到正常的控制台输出时,它只执行一次.
有没有办法将事件标记为已处理或只是忽略第二次执行?