2017-04-15 12 views
0

jquery touchイベントに問題があります。私は私のiPhoneを使用し、Menu1をクリックすると、私のWebページ "link1"が表示されます。Jqueryイベントのタッチ伝播親子(リンク)

私はこれを望んでいます。私はMenu1をクリック(タッチ)するとlink1とlink2を表示します。それから私はlink1かlink2のどちらかを選ぶことができます。

デフォルトでは、リンク1と2は私のCSSには表示されません。

$('body').on('touchstart', '#b', function() { 
 
    $('#b').hide(); 
 
    $('#c').show(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="a"> 
 
    <li id="b"> 
 
    <a> <strong>Menu 1 </strong> </a> 
 
    </li> 
 
    <li id="c"> 
 
    <a href="vv.com"> <strong> Link 1 </strong> </a> 
 
    </li> 
 
    <li id="c"> 
 
    <a href="vv.com"> <strong> Link 2 </strong> </a> 
 
    </li> 
 
</ul>

+0

あなたがすべきネストされたリストを使用することを検討....これは通常これが行われる方法です... –

+0

私はあなたにスニペットを作った。関連するCSSと場合によってはjqueryモバイルを追加してください – mplungjan

+0

また、ID番号が重複しています – mplungjan

答えて

1

ターゲット:first LI、あなたはjQueryの.nextAll()

を使用することができますよりも(私は単純化のためにIDを削除)

$('body').on('touchstart', 'li:first', function(){ 
 
$(this).nextAll().stop().slideToggle(); 
 
});
ul li + li{ 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<ul> 
 
    <li> 
 
    <a><b>Menu 1</b></a> 
 
    </li> 
 
    <li> 
 
    <a href="vv.com"><b>Link 1</b></a> 
 
    </li> 
 
    <li> 
 
    <a href="vv.com"><b>Link 2</b></a> 
 
    </li> 
 
</ul>

しかし、あなたは効果は恐ろしいです見ることができるように - すべてのLIはそのため、通常は、それ自身でアニメーション化し、我々はこのタスクは、ネストされたリストを使用しているのアプローチ方法:

$(document).on('touchstart', 'li', function(e) { 
 
    e.stopPropagation(); // If you need more nested lists don't propagate the click 
 
    $(this).find("> ul").stop().slideToggle(); 
 
});
li > ul { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<ul> 
 
    <li> 
 
    <b>Menu 1</b> <!-- Why use <a> if it's not an anchor... --> 
 
    <ul>   <!-- Nested list! Yey --> 
 
     <li> 
 
     <a href="http://vv.com"><b>Link 1</b></a> 
 
     </li> 
 
     <li> 
 
     <a href="http://vv.com"><b>Link 2</b></a> 
 
     </li> 
 
    </ul> 
 
    </li> 
 
</ul>

+0

あなたの答えはRokoに感謝しています。私はそれを試しましたが、問題は:リンクをクリックしても何も起こらなかったのですか? – Hal

+0

私は問題がe.preventDefault()から来ると思います。 – Hal

+0

@Hal woops。 :)編集しました –

関連する問題