gpt4 book ai didi

javascript - event.preventDefault() 不会取消 jQuery Mobile 中的链接方向

转载 作者:行者123 更新时间:2023-12-01 02:13:07 24 4
gpt4 key购买 nike

背景
我一直在努力解决这个愚蠢的小问题,即在 jQuery Mobile 应用程序中的 anchor 元素上触发单击事件时尝试取消链接方向。

假设我有一个像这样的简单的多页文档:

<div data-role="page" id="page-1">          
<div data-role="content">
<a href="#page-2" id="mLink">page 2</a>
</div><!-- /content -->
</div><!-- /page -->

<div data-role="page" id="page-2">
<div data-role="content">
</div><!-- /content -->
</div><!-- /page -->

...和 ​​JavaScript 像这样:

(function (MyApp, $, undefined) {
'use strict';

// Initializes app
function init() {
$('#mLink').on('click', function (event) {
event.preventDefault();
//event.stopPropagation();
//event.stopImmediatePropagation();

});
}

// jQuery Mobile is ready now -> override defaults
$(document).on("mobileinit", function () {
// Set the default page transition
$.mobile.defaultPageTransition = 'slide';
});

// jQuery Mobile is ready now
$(document).ready(init);

}(window.MyApp = window.MyApp || {}, jQuery));

问题
我只是不明白为什么 event.preventDefault() 没有取消页面转换。但是,如果我添加 event.stopPropagation() 它将取消它。此外,如果我从应用程序中删除 jQuery Mobile 库,它无需 event.stopPropagation() 即可工作。

问题
这是正常行为吗?是否可以始终在处理程序中调用它们来取消链接方向?

注释
我使用 jQuery Mobile 只是因为它的多页面模板、导航和转换功能。

其他问题
隐藏在我最初的问题背后的问题是“jQuery Mobile 对拦截 event.preventDefault() 方法的链接执行什么操作,以阻止链接的默认操作,即转到目标页面” .?'

最佳答案

正常吗?是的。两个都打电话可以吗?是的。
event.preventDefault() 是防止浏览器默认行为的唯一工具,而 event.stopPropagation() 是防止竞争事件处理程序触发的唯一工具.

如果您想要单行代码,可以使用 return false 来达到相同的结果。来自 http://api.jquery.com/on/ :

Returning false from an event handler will automatically call event.stopPropagation() and event.preventDefault(). A false value can also be passed for the handler as a shorthand for function(){ return false; }. So, $("a.disabled").on("click", false); attaches an event handler to all links with class "disabled" that prevents them from being followed when they are clicked and also stops the event from bubbling.

关于javascript - event.preventDefault() 不会取消 jQuery Mobile 中的链接方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com