2016-08-09 12 views
0

javascriptのは、私は次のHTMLを持って対応し、モバイルメニュー再作成しようとしているミックス

<ul id="mobileNav"> 
    <li class="toggle"><a href="#canvas" id="mobile-close-nav" class="icon-close"></a></li> 
    <li class="folder"> 
      <input type="checkbox" name="mobile-folder-toggle" id="mobile-folder-toggle" class="folder-toggle-box hidden"> 
      <label for="mobile-folder-toggle" class="folder-toggle-label" data-href="#">About</label> 
      <div class="subnav"> 
       <ul class="sub-menu"> 
        <li class="page-collection"><a href="#">About Us</a></li> 
        <li class="page-collection"><a href="#">The Team</a></li> 
       </ul> 
      </div> 
    </li> 
    <li class="folder"> 
      <input type="checkbox" name="mobile-folder-toggle" id="mobile-folder-toggle" class="folder-toggle-box hidden"> 
      <label for="mobile-folder-toggle" class="folder-toggle-label" data-href="#">About</label>Products</label> 
      <div class="subnav"> 
       <ul class="sub-menu"> 
        <li class="page-collection"><a href="#">First</a></li> 
        <li class="page-collection"><a href="#">Second</a></li> 
        <li class="page-collection"><a href="#">Third</a></li> 
       </ul> 
      </div> 
     </li> 
</ul> 

を私は開くために、以下のスクリプトを使用しています/サブメニューを閉じます。

<script type="text/javascript"> 
jQuery(document).ready(function($) { 
$('.sub-menu').hide(); 
$("li:has(ul)").click(function(){ 
     $("ul",this).toggle(); 
    }); 
}); 
</script> 

しかし、「入力」と「ラベル」の組み合わせでは機能しません。

<input type="checkbox" name="mobile-folder-toggle" id="mobile-folder-toggle" class="folder-toggle-box hidden"> 
      <label for="mobile-folder-toggle" class="folder-toggle-label" data-href="#">About</label> 

これに変更されています:

<a class="folder-toggle-label" data-href="#">About</a> 

(「入力」が削除され、「ラベル」を「A」に変更されます) が、私はそれを動作させる必要があることは、以下の時に動作します元のコードと同じように、入力/ラベルのコンボが他のものを制御する必要があるためです。スクリプトを修正するにはどうすればよいですか?

ありがとうございます!ここで

+0

スタックオーバーフローのスニペット機能を使用して、これを実際の例にしてみてください。または、少なくとも「それは機能していません」という意味を説明してください。 – SpoonMeiser

+0

クリックの代わりに入力のオンチッチを聞いてください。 – epascarello

+0

"それは動作していません"という意味です。私はサブメニューを開いたり閉じたりしないスクリプトを意味します。 – isabel018

答えて

0

私はそれを動作させることを試みた:

$(document).ready(function($) { 
 
$('.sub-menu').hide(); 
 
$(".folder-toggle-box").change(function(){ 
 
     $(this).parent().find("ul").toggle(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
 
<ul id="mobileNav"> 
 
    <li class="toggle"><a href="#canvas" id="mobile-close-nav" class="icon-close"></a></li> 
 
    <li class="folder"> 
 
      <input type="checkbox" name="mobile-folder-toggle" id="mobile-folder-toggle1" class="folder-toggle-box hidden"> 
 
      <label for="mobile-folder-toggle1" class="folder-toggle-label" data-href="#">About</label> 
 
      <div class="subnav"> 
 
       <ul class="sub-menu"> 
 
        <li class="page-collection"><a href="#">About Us</a></li> 
 
        <li class="page-collection"><a href="#">The Team</a></li> 
 
       </ul> 
 
      </div> 
 
    </li> 
 
    <li class="folder"> 
 
      <input type="checkbox" name="mobile-folder-toggle" id="mobile-folder-toggle2" class="folder-toggle-box hidden"> 
 
      <label for="mobile-folder-toggle2" class="folder-toggle-label" data-href="#">Products</label> 
 
      <div class="subnav"> 
 
       <ul class="sub-menu"> 
 
        <li class="page-collection"><a href="#">First</a></li> 
 
        <li class="page-collection"><a href="#">Second</a></li> 
 
        <li class="page-collection"><a href="#">Third</a></li> 
 
       </ul> 
 
      </div> 
 
     </li> 
 
</ul>

+0

ありがとう、この作品! – isabel018

0

実は、あなただけのバブリングからのイベントを防ぐために持っています。このようにfalseを返すだけです。

jQuery(document).ready(function($) { 
$('.sub-menu').hide(); 
$("li:has(ul)").click(function(){ 
     $("ul",this).toggle(); 
     return false; 
    }); 
}); 
+0

または、event.preventDefault()を追加します。 – Vcasso

+0

ありがとうございますが、私はそれをクリックすると、親liの後の "+"から " - "への変更がサブメニューの拡大/縮小を示すため、 "input + label"イベントが必要です – isabel018

関連する問題