当我想在某个事件被触发后阻止其他事件处理程序执行时,我可以使用两种技术之一.我将在示例中使用jQuery,但这也适用于plain-JS:
event.preventDefault()$('a').click(function (e) {
// custom handling here
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
return false$('a').click(function () {
// custom handling here
return false;
});
Run Code Online (Sandbox Code Playgroud)
这两种停止事件传播的方法之间有什么显着差异吗?
对我来说,return false;比执行方法更简单,更短并且可能更不容易出错.使用该方法,您必须记住正确的套管,括号等.
另外,我必须在回调中定义第一个参数才能调用该方法.也许,有一些原因可以解释为什么我应该避免这样做并使用preventDefault呢?有什么更好的方法?
javascript jquery event-handling event-propagation dom-events
在用户点击...."登录"按钮和其他事件后,我制作了一个加载脚本 - 让用户知道他们必须等待(直到ajax回复).
我如何可以禁用任何鼠标点击(右键单击,左键单击,双击,中键单击,X点击),上div id="doc"?
我想将该代码添加到loading.js
HTML
<html>
...
<body>
<div id="doc">
<div id="content">
...
<input type="button" value="Login" id="login" />
...
</div id="content">
</div id="doc">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
loading.js
function load_bar(x)
{
if (x==0)
{
$(document.body).css( {"cursor": "default"} );
$("body").css( {"cursor": "default"} );
$("#loading").css("visibility", "hidden"); //modal window
// $("#doc").....ENABLE all clicks (left/right/etc)
}
else if (x==1)
{
$(document.body).css( {"cursor": "wait"} );
$("body").css( {"cursor": "wait"} );
$("#loading").css( {"visibility": "visible"} ); //modal window
// $("#doc").....DISABLE all clicks (left/right/etc)
} …Run Code Online (Sandbox Code Playgroud) 我们假设我有以下结构:
<div id="divid1">
<div id="divid2">
<div id="divid3">
</div>
<div id="divid4">
</div>
</div>
<div id="divid5">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
上面的代码只是解释问题的一个例子,所以不要过多关注它.
现在让我们假设我有以下jQuery:
$("#divid1").click(function(){});
Run Code Online (Sandbox Code Playgroud)
现在..我想做的是以下内容:
divid1.让我们假设他们实际上已经点击了divid4.触发此事件是因为divid4内部divid2是内部的divid1约束: