mic*_*lli 2 javascript jquery event-handling jquery-mobile
背景
我一直在努力解决这个愚蠢的小问题,即在jQuery Mobile应用程序中的锚元素上触发click事件时尝试取消链接方向.
假设我有一个简单的多页文档,如下所示:
<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 -->
Run Code Online (Sandbox Code Playgroud)
......和这样的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));
Run Code Online (Sandbox Code Playgroud)
问题
我无法弄清楚为什么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/:
从事件处理程序返回false将自动调用event.stopPropagation()和event.preventDefault().也可以为处理程序传递false值,作为function(){return false;的简写; }.所以,$("a.disabled").on("click",false); 将事件处理程序附加到具有"禁用"类的所有链接,以防止它们在单击时被跟踪,并且还可以阻止事件冒泡.
| 归档时间: |
|
| 查看次数: |
12706 次 |
| 最近记录: |