如何在其轨道上停止jQuery或JavaScript函数的一种简单方法是使用return false行。 在大多数情况下,这不是最佳方法,应使用其他功能。
另请参见: 停止jQuery事件函数
返回假示例
简单地使用return false行停止函数并将控制权返回给调用函数或页面元素。 此jQuery函数切换#htmlelement的隐藏和显示,然后阻止浏览器访问所单击超链接的href元素
$("a.toggle").click(function () {
$("#htmlelement").toggle(); // hide/show toggle
return false; // Prevent browser from visiting the href
});
要考虑的其他变化:
-
return false;
-
preventDefault()
-
stopPropagation
() -
stopImmediatePropagation()
您应该使用哪种方法?
return false;
仅在其他选项不适用或不确定或绝望时使用。
preventDefault()
在需要取消默认行为(例如说超链接,键盘快捷键或事件等)时使用,它还需要允许在回调函数中访问事件参数(在此示例中,我使用e
):
$("a").click(function (e) {
// e == our event data
e.preventDefault();
});
stopPropagation()
如果您为带有子元素的容器元素指定的规则有例外,则可以使用此方法。 例如,说您禁用了网页上的超链接,但特定区域中的链接除外。
$("a").click(function () {
// Do nothing
});
$("#dohyperlinksdiv a").click(function (e) {
// Don't cancel the browser's default action
// and don't bubble this event!
e.stopPropagation();
});
stopImmediatePropagation()
不错的功能,可以停止所有将来的绑定事件。 事件将按照绑定的顺序触发,当它击中stopImmediatePropagation()函数时,所有其他绑定的事件都不会触发。
$("div a").click(function () {
// Do something
});
$("div a").click(function (e) {
// Do something else
e.stopImmediatePropagation();
});
$("div a").click(function () {
// THIS NEVER FIRES
});
$("div").click(function () {
// THIS NEVER FIRES
});
结论
除非确实需要,否则不要使用return false,除非它确实提供了较差的取消,并且请记住在退出函数之前防止元素的默认操作。 让我们保持代码整洁!
From: https://www.sitepoint.com/stop-jquery-event-functions/