Javascript Jquery鼠标事件不';t火
我有一个很奇怪的问题。我的示例代码[此处][1]运行得很好,但我在aptana studio编辑器中有完全相同的代码,当我在Chrome或Eclipse浏览器中尝试时,事件不会触发。我无法想象问题出在哪里,因为它是完全相同的代码 HTMLJavascript Jquery鼠标事件不';t火,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一个很奇怪的问题。我的示例代码[此处][1]运行得很好,但我在aptana studio编辑器中有完全相同的代码,当我在Chrome或Eclipse浏览器中尝试时,事件不会触发。我无法想象问题出在哪里,因为它是完全相同的代码 HTML 如果您的代码确实是引用的,那么问题在于,当您尝试将事件处理程序挂接到元素时,这些元素不存在。JSFIDLE的默认设置对您隐藏了这个问题。(看左边,你会看到你的代码在load事件触发之前不会运行,这在页面加载过程中非常非常晚。) 要解决此问题,请执行以下操作之一
如果您的代码确实是引用的,那么问题在于,当您尝试将事件处理程序挂接到元素时,这些元素不存在。JSFIDLE的默认设置对您隐藏了这个问题。(看左边,你会看到你的代码在
load
事件触发之前不会运行,这在页面加载过程中非常非常晚。)
要解决此问题,请执行以下操作之一:
结合这两种方法,您还可以考虑使用事件委派,而不是直接连接元素上的事件。您的
mouseup
和mousedown
处理程序将分别附加到每个a
元素。那是一大堆勾搭。如果存在所有这些a
元素都在其中的容器(body
或者更接近的容器),您可以将事件挂接到该容器上(因为这些事件是气泡),然后检查事件是否起源于a
元素。jQuery支持事件委派,为您完成了大部分艰苦的工作,通过(我喜欢它,因为它非常明确)以及最近传递给您的六个变量之一。如果您的代码确实是引用的,那么问题是当您尝试将事件处理程序挂接到元素时,这些元素并不存在。JSFIDLE的默认设置对您隐藏了这个问题。(看左边,你会看到你的代码在load
事件触发之前不会运行,这在页面加载过程中非常非常晚。)
要解决此问题,请执行以下操作之一:
结合这两种方法,您还可以考虑使用事件委派,而不是直接连接元素上的事件。您的
mouseup
和mousedown
处理程序将分别附加到每个a
元素。那是一大堆勾搭。如果存在所有这些a
元素都在其中的容器(body
或者更接近的容器),您可以将事件挂接到该容器上(因为这些事件是气泡),然后检查事件是否起源于a
元素。jQuery支持事件委托,为您完成了大部分艰苦的工作,通过(我喜欢它,因为它非常明确)以及最近传递给您的六个变量中的一个。是$(document.ready(function(){})中的上述事件代码>?对我来说很好:@HunterMcMillen:是的。注意,第二句中OP的链接也是到JSFIDLE的链接。您的工作原理与他/她的工作原理相同:jsFiddle的默认设置隐藏了这一特定错误。@T.J.Crowder我实际上包含了ready事件,这并不重要。我没有注意到他上面的链接。@HunterMcMillen:哇。我甚至先看了一眼。:-)叹气(让我们清理这些注释,它们不会添加任何内容。此注释将在…)中自毁)是您在$(document).ready(function(){})中的上述事件代码>?对我来说很好:@HunterMcMillen:是的。注意,第二句中OP的链接也是到JSFIDLE的链接。您的工作原理与他/她的工作原理相同:jsFiddle的默认设置隐藏了这一特定错误。@T.J.Crowder我实际上包含了ready事件,这并不重要。我没有注意到他上面的链接。@HunterMcMillen:哇。我甚至先看了一眼。:-)叹气(让我们清理这些注释,它们不会添加任何内容。此注释将在…$(function(){…})
抱歉,我对shorthand@KyleMacey. 答案是否经过编辑?我完全不能理解你的评论。@gdoron:他指的是我提到的ready
事件。他更喜欢它的简写形式,即将一个函数传递到jQuery
($
)函数中。似乎是抢先的,因为您甚至没有列出函数本身。@user1011185:不用担心,很高兴这有帮助。(但请不要这样发誓。)$(function(){…})
对不起,我对shorthand@KyleMacey. 答案是否经过编辑?我完全不能理解你的评论。@gdoron:他指的是我提到的ready
事件。他更喜欢它的简写形式,即将一个函数传递到jQuery
($
)函数中。似乎是抢先的,因为您甚至没有列出函数本身。@user1011185:不用担心,很高兴这有帮助。(但请不要这样发誓。)
<!DOCTYPE html>
<html>
<head>
<title>OrderScreen</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="js/script.js" type="text/javascript"></script>
</head>
<body>
<a href="">Test</a>
</body>
</html>
$("a").mouseup(function() {
clearTimeout(pressTimer);
// Clear timeout
return false;
}).mousedown(function() {
// Set timeout
pressTimer = window.setTimeout(function() {
alert("hcbdhaf")
}, 1000);
return false;
}).click(function() {
alert("dfsdg");
});