jquery mobile event.preventdefault()无效

问题描述 投票:1回答:2

奇怪的问题,显然并不常见于jquery mobile。我有一个两项列表视图弹出窗口,旨在允许用户通过<a href="someurl.com">切换视图。每个选项都旨在在同一页面上显示json数据。我不希望href将观众带到另一页,所以我试图使用event.preventdefault()

但经过大量研究,我仍然无法阻止href跳转到google.com,即使(我认为)我正在使用event.preventdefault();

这是相关的html:

<div data-role='popup' id='popupSwitchView' data-theme='none'>
    <ul data-role='listview'>
        <legend>Choose a view</legend>
        <li><a href='javascript:;' data-role='button' data-transition='fade' data-mini='true' class='ui-btn-active switchview' id='ABC' name='theView' value='ABC'>ABC</a>
        </li>
        <li><a href='http://google.com' data-role='button' data-transition='fade' data-mini='true' class='switchview' id='DEF' name='theView' value='DEF'>DEF</a>
        </li>
    </ul>
</div>

......这是jquery:

$('#DEF').on('click', function () {
    event.preventDefault();

我想知道这是否是我使用选择器的方式,但我用相同的代码here测试了选择器,看起来我的选择器很好。

Chrome控制台未显示任何错误。对我在这里缺少什么的想法?

编辑

我忽略了提到上面的html和jquery是php变量$html_jq的一部分,它是从另一个php文件中回显的。

也就是说,file1.php回应$html_jq,这是在file2.php中定义的。

jquery-mobile jquery-selectors
2个回答
0
投票

我认为答案的一部分(可能是0.01%)。选择器没有抓住任何东西,这解释了不合作的行为。我认为这意味着jquery mobile和jquery本身在幕后处理这个事件,他们指的是其他东西,显然不是我的选择器。

正如在this stack question中所建议的那样,当我点击该链接时,我深入研究了实际发生的事情,这很奇怪。

即,在Chrome开发者工具Source选项卡中选中“点击” - > Event Listener Breakpoints - > Mouse - > Click然后击中f11直到它停止跳转,我发现了似乎是一个不可避免的While循环,其中事件被挂起。那个While循环似乎在第4541行的jquery-2.1.1.js中。

这是有趣的引擎盖下的东西,在某些时候证明非常有价值,但我不确定在这里做什么。有什么建议?


0
投票

截至此日期,当您尝试在Jquery 2.1.4之后使用JQM 1.4.5时,会出现此问题

Jquery mobile github

© www.soinside.com 2019 - 2024. All rights reserved.