0

モバイル ビュー用に 2 レベルのアコーディオン メニューがあり、メニュー項目の 1 つに子項目がありません。メニューを閉じることができるように親 ul に対して宣言e.preventDefault();した子アイテムがあるものについては、子アイテムのないアイテム (手順) にも影響しますが、これは望ましくありません。

クリックできるが正しい方法を見つけることができないように、手順アイテムをターゲットにする必要があります。これが問題のコードですjQuery("ul.sf-menu > li").off('click');

jQuery("ul.sf-menu > li > a").on("click", function(e){
    if(jQuery(this).parent().has("ul")) {
    e.preventDefault();
    jQuery("ul.sf-menu > li").off('click');
    }

デモ (800px 以下でご覧ください): http://jsbin.com/ohocer/1/edit

どうもありがとう!

4

1 に答える 1

0

問題は.has()、ブール値ではなく jQuery コレクションを返すことです ( http://api.jquery.com/has/のドキュメントを参照してください)。コレクションに次の要素が含まれていることを確認できます。

if (jQuery(this).parent().has("ul")[0]) {

または、タグを使用する場合は、子preventDefaultを持つaタグの href 属性を削除してみませんか? preventDefaultその後、完全に削除できます。

于 2013-06-15T08:11:18.463 に答える