我想要完成的工作在 Chrome 上完美运行——Android 4.1
但在 iOS 上非常失败。

$(document).on('mouseenter touchend','[id*=mmlink]', function (e) {
    var $btn = $(this);
    var href = $btn.attr('href');
    var count = ($btn.data('click_count') || 0) + 1;

    $btn.data('click_count', count);
    if (count == 1) {
        $btn.click(function(v) {
            v.preventDefault();
        });
     } else {
        document.location.href = href;
     }
 });

我使用 milonic 菜单生成子菜单。我需要使用 .on() 来选择子菜单。

测试页面:http://www.wolfbariatrics.com/mmtest/index.htm

我在想还有另一个事件只发生在 iOS 中。 safari 的远程调试器允许我设置断点,但是一旦我进入或越过它,就会跟随 anchor 标记。

我已经完全从 anchor 标记和 href 中删除了所有事件,但仍然没有任何效果。

最佳答案

您可能想在 StackOverflow 上查看有关 event.preventDefault 的此主题并返回 false:

event.preventDefault() vs. return false

基本上:
“jQuery 的 preventDefault 不会阻止其他处理程序的执行。这就是 stopImmediatePropagation 的用途。”



“从 jQuery 事件处理程序中返回 false 与在传递的 jQuery.Event 对象上调用 e.preventDefault 和 e.stopPropagation 实际上相同。

e.preventDefault() 将阻止默认事件发生, e.stopPropagation() 将阻止事件冒泡,返回 false 将两者兼而有之。请注意,此行为与普通(非 jQuery)事件处理程序不同,其中,值得注意的是, return false 不会阻止事件冒泡。

关于jquery - Mobile Safari preventDefault() 不起作用?安卓运行良好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12696459/

10-12 13:20