jQueryを使ってクリック開閉式のUIを作りたいのですが、要件が少し特殊なため行き詰まってしまいました。
- .open クラスの付け外しによって開閉を実現したい
- 開閉する要素内のどこをクリックしても.openが付与される
- 閉じる際は、その子要素である小さいボタンのみ反応する
該当箇所のコードは、
html
1<div class="product-ask"> 2 ... 3 <div class="pin">...</div> 4</div>
javascript
1$('.product-ask').click(function(){ 2 $(this).addClass('open'); 3}); 4$('.product-ask>.pin').click(function(){ 5 $(this).parent().toggleClass('open'); 6});
ここで
- 最初の .open クラス付与は問題なく動作するが、
- 閉じる際に div.pin 要素をクリックしても .open クラスが除去されない
といった問題に直面しております。
ブラウザの Developer tools で確認する限りDOM操作は行われているようです。
どうやら div.pin 要素をクリックした際に div.product-ask の addClass と div.pin の toggleClass が重複して実行されている(それも addClass が後)のではないかと推測しております。
冒頭に示しました要件をクリアする形で、何かしらアドバイスや参考資料をいただけますと幸いです。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。