Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';这是';鼠标';和';单击';事件?_Javascript_Jquery - Fatal编程技术网

Javascript 什么';这是';鼠标';和';单击';事件?

Javascript 什么';这是';鼠标';和';单击';事件?,javascript,jquery,Javascript,Jquery,使用jQuery,我经常喜欢将mousedown和mouseup事件与可按下按钮结合使用 然而,在每种情况下,我都使用了mouseup事件,绑定click事件似乎会产生相同的结果 以下两种方法之间是否存在实质性差异 // Method 1 $('.myButton').bind('click', callback); // Method 2 $('.myButton').bind('mouseup', callback); 请注意,我正在寻求关于使用这两种方法之间差异的技术解释。这与标记为重

使用jQuery,我经常喜欢将
mousedown
mouseup
事件与可按下按钮结合使用

然而,在每种情况下,我都使用了
mouseup
事件,绑定
click
事件似乎会产生相同的结果

以下两种方法之间是否存在实质性差异

// Method 1
$('.myButton').bind('click', callback);

// Method 2
$('.myButton').bind('mouseup', callback);

请注意,我正在寻求关于使用这两种方法之间差异的技术解释。这与标记为重复的问题无关:

通过鼠标悬停事件,您可以单击屏幕上的其他位置,按住单击按钮,将指针移动到鼠标悬停元素,然后释放鼠标指针

click事件要求在该元素上发生mousedown和mouseup事件

通常的期望是单击需要mousedown和mouseup事件,因此我建议使用click事件


从可能的重复情况来看,mouseup和mousedown事件似乎也可能是由鼠标按钮而不是左键单击按钮引起的。这与一般用户所期望的非常不同。

影响I编码方式的最大区别是:HTML标记上的
单击事件负责更改URL。相比之下,
mousedown
mouseup
事件不会实现这一点

我的理解是,“单击”隐藏了很多复杂性(例如确保mousedown/up发生在同一元素上,用ESC/右键单击取消)。最好在“鼠标向下/向上”上使用“单击”


一种情况是,当应用程序经常更新内容,导致底层DOM元素被替换时,“单击”似乎不起作用。在这种情况下,“点击”不会被触发,可能会导致客户体验不佳。

我想在其他回答中补充一点,
click
事件在触控设备上有效,而
mouseup
/
mousedown
则不起作用(显然是因为没有“鼠标”)


请注意,有一个带有点击事件的触控设备。

我认为鼠标下降和鼠标上升事件可以让您进一步控制点击事件。它将单击事件分为另外两个事件,以便可以为每个事件编码更多细节。单击事件限制鼠标单击,并强制您在同一函数中对两个事件进行编码

如果您尝试进行自己的拖动行为,则可以理解此限制

  • 拖动需要鼠标按下事件来启动拖动行为。不能使用单击事件执行此操作。因为你需要一个单独的鼠标按下事件。单独的鼠标向上移动事件的要求变得很明显
  • 拖动开始后(您尚未释放鼠标按钮),需要根据光标位置更改对象的位置。这也需要仅在鼠标按下事件中进行编码 但是,如果我们可以改变人们拖动对象的方式,您也可以使用“单击事件”。例如,单击-1开始拖动,单击-2停止拖动并将对象放置在另一个位置。但我发现有两个问题:

  • 这看起来不自然。在现实世界中,我们习惯于 按住对象并拖动它
  • 只需单击并移动鼠标,就可以移动沉重的图形,这可能需要大量的过程

  • @我不同意。我想知道这两个事件之间的技术差异,而不是检测用户是否点击和按住。记住,鼠标事件在基于手势的设备(如iPad或移动电话)上不起作用。它们是否真的会在没有仔细阅读这两个问题的情况下停止?请重新打开它,它不是一个副本。W3C建议在大多数鼠标事件中使用
    单击
    鼠标向下
    鼠标按下
    ,以及
    鼠标按下
    都可以达到预期的效果。根据我的测试,似乎任何鼠标按钮都可以触发点击。请参阅鼠标中的滚动按钮在单击元素顶部时也会导致单击事件。从我做的一些快速测试中可以看出,在Firefox中使用“单击”事件处理程序时,中滚动按钮不会触发事件,但会使用“mousedown”和“mouseup”触发。如果我需要监控链接上的点击和中键点击事件,除了用户可能不再在链接上,因此不会触发链接之外,使用“鼠标”是否还有更大的缺点?