背景
我一直在努力解决这个愚蠢的小问题,即当在 jQuery Mobile 应用程序中的锚元素上触发单击事件时尝试取消链接方向。
假设我有一个简单的多页文档,如下所示:
<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() 方法的链接做了什么,以不阻止链接的默认操作,即转到目标页面。?”