0

我有一个这样的 JavaScript:

var nav     = $('#nav_header a');
var current = null;

nav.click( function(event) {
    var key = nav.index($(event.target) );
    if (current != key) {
        // do some fancy stuff
    }
    // works fine on desktop browsers
    event.preventDefault();
    // needed on iOS
    event.stopPropagation();
}

使用这个简短的 HTML:

<nav>
    <ol id="nav_header" class="nav_header">
        <li><a href="Link 1">Link 1</a></li>
        <li><a href="Link 1">Link 2</a></li>
    </ol>
</nav>

当我只使用event.preventDefault();它时,它在所有桌面浏览器中都能正常工作。但在 iOS 上(在 5.1 上测试)它会在短时间内显示地址栏。当我添加event.stopPropagation();时,它也停止显示地址栏。但是:它仍然会在一瞬间更改地址,但不会加载链接的页面(因为事件被取消)。为什么会发生这种情况,我该如何预防?我也尝试过return false;,但它(当然,正如预期的那样)与event.stopPropagation();.

4

0 回答 0