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 に答える