2017-02-02 9 views
0

私はデスクトップのホバー上でdiv(#my-menu)を開くリンク(#my-link)を持っています。この部門の中に小さなメニューがあります。タッチスタートと防止デフォルトの子ブロックのリンク

今私はそれをモバイルでタップで動作させようとしています。

私はこのコードを持っているが、私はdivの内側のリンクをクリックすることはできません。

$('#my-link').on('touchstart', function (e) {   
    e.preventDefault();   
    $('#my-menu').load(...Im loading content here...); 
    $('#my-menu').toggle(); 
}); 

任意のヘルプ?私はでpreventDefaultは、これらのリンクをブロックしていると思う...

HTMLマークアップ:

<a href="example.com" id="my-link">Lorem ipsum</a> 
<div id="my-menu"> 
<a href="example.com">Lorem ipsum</a> 
<a href="example.com">Lorem ipsum</a> 
<a href="example.com">Lorem ipsum</a> 
</div> 

はEDIT:

<div id="my-link"><a href="example.com">Lorem ipsum</a></div> 

は、私のような、リンクタグをラップする問題を解決することができました

と入力し、最初のスクリプト行を次のように変更します。

$('#my-link > a').on('touchstart', function (e) { 
+0

アンカータグを使用する必要がありますか。代わりにdivのようなものを代わりに使用してください。可能であればあなたの完全なマークアップとjsfiddleを表示してください。 –

+0

残念ながら私はアンカーを使用する必要があります。ダブルタップするときに使用されます。マークアップは非常に簡単です。私はその質問を更新しました。 – gordonek

+0

あなたは、preventDefaultがそれらのリンクをブロックしている可能性があります、あなたはpreventDefaultを削除しようとしていて、動作しているかどうかチェックしましたか? –

答えて

0

event.preventDefault()は、要素のデフォルトアクションを実行できないようにします。この場合、<a></a>タグのデフォルトは、サーバーに要求を送信することです。一部のタグにはデフォルトアクションがないため、<div></div>,<h1></h1>などのタグを使用する必要があります。 <a></a>タグを使用する必要がある場合は、リンクが何もしないようにする<a href="javascript:void(0)"></a>を実行してください。

More Info on event.preventDefault()

関連する問題