Mobile Safari preventDefault()不起作用? Android运行正常

时间:2012-10-02 18:54:46

标签: jquery mobile drop-down-menu safari

我想要实现的目标在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的远程调试器允许我设置断点,但是一旦我进入或超过它就跟随锚标记。

我已经完全删除了锚标记中的所有事件和href,但仍然无效。

1 个答案:

答案 0 :(得分:2)

您可能希望在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)事件处理程序不同,其中,值得注意的是,返回false不会阻止事件冒泡。 “