Jqueryで切り替え-期待どおりにメニューを閉じることができません

ベロデ

メニューの表示と非表示に問題があります。ユーザーが「メニューを表示..」リンクを初めてクリックすると、メニューが表示されます。2回目のクリックで、同じメニューが消えるはずです。

<p><a id="showmenu1" href="#">Show menu 1</a></p>
<p><a id="showmenu2" href="#">Show menu 1</a></p>

<div id="menu1" class="topmenus"> 
<div class="mystyle">
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
</div>
</div>

<div id="menu2" class="topmenus"> 
<div class="mystyle">
<ul>
<li>Item1</li>
<li>Item2</li>
</ul>
</div>
</div> 

Jqueryのトグル機能を使用していますが、問題なく動作します。

$(document.body).on("click","#showmenu1",function(e) { 
e.preventDefault();
$("div.topmenus").not("#menu1").hide();
$("#menu1").toggle();
}); 

$(document.body).on("click","#showmenu2",function(e) { 
e.preventDefault();
$("div.topmenus").not("#menu2").hide();
$("#menu2").toggle();
}); 

ただし、ユーザーがページの任意の場所をクリックしたときに、すべてのメニューを閉じたいと思います。だから、私はこれを追加しました:

$(document).mouseup(function(e) {
if (!$("#menu1").is(e.target) && $("#menu1").has(e.target).length === 0) {$("#menu1").hide();}
if (!$("#menu2").is(e.target) && $("#menu2").has(e.target).length === 0) {$("#menu2").hide();}
});

これで、ページの任意の場所をクリックするとメニューが閉じますが、トグル機能が機能しなくなりました。[メニューを表示...]リンクを2回クリックしても、メニューが閉じません。

Hikarunomemory

クリックした要素がであるかどうかは.showmenu、を使用して確認できますevent.target

これがデモです:

$(document).on("click", ".showmenu", function(e) {
  e.preventDefault();
  var $menus = $(".topmenus")
  var index = $(this).index('.showmenu')
  var hidingTarget = $menus.splice((index-1), 1)
  $(hidingTarget).hide()
  $menus.toggle();
});

$(document).on('click', function(e) {
  if (!$(e.target).hasClass('showmenu')) {
    e.stopPropagation()
    $(".topmenus").hide();
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p><a id="showmenu1" class="showmenu" href="#">Show menu 1</a></p>
<p><a id="showmenu2" class="showmenu" href="#">Show menu 2</a></p>

<div id="menu1" class="topmenus">
  <div class="mystyle">
    <ul>
      <li>Item1-1</li>
      <li>Item1-2</li>
    </ul>
  </div>
</div>

<div id="menu2" class="topmenus">
  <div class="mystyle">
    <ul>
      <li>Item2-1</li>
      <li>Item2-2</li>
    </ul>
  </div>
</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jquery-mobileページに切り替えることができません

分類Dev

メニューを切り替えますが、閉じずに内側をクリックすることもできます

分類Dev

jqueryでアイコンを切り替えることができません

分類Dev

jQueryで背景画像を切り替えることができません

分類Dev

jqueryでメニューを垂直方向に切り替える

分類Dev

jQueryを使用して<div>を切り替えることができません

分類Dev

Jqueryを右から左に切り替えることはできません

分類Dev

jQueryでメニューを切り替えます

分類Dev

jQueryでflexdivを切り替えます

分類Dev

jqueryでliを切り替えます

分類Dev

jqueryでattr()を切り替える方法

分類Dev

jQueryで画像srcを切り替える

分類Dev

jqueryでCSSを切り替える方法

分類Dev

jqueryで色を切り替える

分類Dev

jQuery .html() で SVG を切り替える

分類Dev

jQuery1.8.3で切り替えます

分類Dev

Javascript / jQueryで切り替える方法

分類Dev

divを切り替えることができません

分類Dev

KDE / Gnomeを切り替えることができません

分類Dev

親がクリックされたときにjQueryでサブメニューを切り替える方法

分類Dev

Pythonを使用してSeleniumでiframeに切り替えてフレームを閉じることができません

分類Dev

別のフォームに切り替えた後、フォームを非表示にしたり閉じたりすることはできません

分類Dev

jqueryでアニメーションを切り替えます

分類Dev

AppiumAndroidでロケールを切り替えることができません

分類Dev

AppiumAndroidでロケールを切り替えることができません

分類Dev

NSUserdefaultsを期待どおりに機能させることができません

分類Dev

グリーターに切り替えることができません

分類Dev

jQueryでクリック時にHTMLメニューを切り替える

分類Dev

Webdriverを使用してiframeに切り替えることができません

Related 関連記事

  1. 1

    jquery-mobileページに切り替えることができません

  2. 2

    メニューを切り替えますが、閉じずに内側をクリックすることもできます

  3. 3

    jqueryでアイコンを切り替えることができません

  4. 4

    jQueryで背景画像を切り替えることができません

  5. 5

    jqueryでメニューを垂直方向に切り替える

  6. 6

    jQueryを使用して<div>を切り替えることができません

  7. 7

    Jqueryを右から左に切り替えることはできません

  8. 8

    jQueryでメニューを切り替えます

  9. 9

    jQueryでflexdivを切り替えます

  10. 10

    jqueryでliを切り替えます

  11. 11

    jqueryでattr()を切り替える方法

  12. 12

    jQueryで画像srcを切り替える

  13. 13

    jqueryでCSSを切り替える方法

  14. 14

    jqueryで色を切り替える

  15. 15

    jQuery .html() で SVG を切り替える

  16. 16

    jQuery1.8.3で切り替えます

  17. 17

    Javascript / jQueryで切り替える方法

  18. 18

    divを切り替えることができません

  19. 19

    KDE / Gnomeを切り替えることができません

  20. 20

    親がクリックされたときにjQueryでサブメニューを切り替える方法

  21. 21

    Pythonを使用してSeleniumでiframeに切り替えてフレームを閉じることができません

  22. 22

    別のフォームに切り替えた後、フォームを非表示にしたり閉じたりすることはできません

  23. 23

    jqueryでアニメーションを切り替えます

  24. 24

    AppiumAndroidでロケールを切り替えることができません

  25. 25

    AppiumAndroidでロケールを切り替えることができません

  26. 26

    NSUserdefaultsを期待どおりに機能させることができません

  27. 27

    グリーターに切り替えることができません

  28. 28

    jQueryでクリック時にHTMLメニューを切り替える

  29. 29

    Webdriverを使用してiframeに切り替えることができません

ホットタグ

アーカイブ