1

我正在尝试使用 jQuery 为我的网站创建一个错误的悬停事件...

我只创建了以下列表中的所有子元素,现在也返回 false,而不是链接到正确的页面......

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
    $("ul.sf-menu li.i").click(function(e) {
        e.preventDefault();
    });
}

有人对可行的替代方法有想法吗?


HTML

<ul class="sf-menu"> <li><a href="index.html">Home</a><li class="i"><a href="wedding-hire.html">Weddings</a>
            <ul>
                <li><a href="peel-suite.html">Peel Suite</a></li>
                <li><a href="the-hall.html">The Hall</a></li>
                <li><a href="the-grounds.html">The Grounds</a></li>
                <li><a href="food-and-drink.html">Food &amp; Drink</a></li>
                <li><a href="pricing.html">Pricing</a></li>
            </ul>
        </li>

4

2 回答 2

0

出色地。没有 HTML 很难说。但是当用户单击 li 时,您将停止浏览器的默认行为(因此还有它的子项,我认为这是一个锚点/链接)。您可以在点击时检查它是链接还是锚点,并以不同的方式处理它;

$("ul.sf-menu li.i").click(function(e) {
    if (e.target.nodeName!=="A"){
        e.preventDefault();
        //do your hover code
    }
    else{
        //do nothing, because the user wants the link to load
    }
});
于 2012-10-09T10:15:29.463 回答
0

更改您的选择器,使其仅匹配第一级列表点,我也没有看到类 i,因此您可能还需要从选择器中删除它。

$("ul.sf-menu > li") 
于 2012-10-09T10:49:41.403 回答