我想要实现的目标在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,但仍然无效。
答案 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不会阻止事件冒泡。 “