アプリ版:「スタンプのみでお礼する」機能のリリースについて

Jquery の slide.toggle でメニューを作っていますが、
ボタンでは正常にメニューの開閉がされるのですが、
ボタン以外のクリック(またはタップ)で
開いたメニューを閉じたいのですがうまくいきません。
コードは以下のように記述しています。

$('#menu').each(function(){
$(this).css("height",$(this).height()+"px");
});
$('#btn').click(function () {
$('#menu').slideToggle('slow');
$(this).toggleClass('active');
});

お詳しい方、ご教授お願いいたします。

質問者からの補足コメント

  • ご回答ありがとうございます。
    詳しいことはわからずに、
    他のサイトにあったコードをそのまま使いました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/07/16 16:41
  • <body>~</body>の間は以下のとおりです。

    <header>
    <button type="button" id="btn"></button>
    <nav id="menu">
    <ul>
    <li>Menu 1</li>
    <li>Menu 2</li>
    <li>Menu 3</li>
    </ul>
    </nav>
    </headr>

    <script>Jquery</script>
    <script>
    $('#menu').each(function(){
    $(this).css("height",$(this).height()+"px");
    });
    $('#btn').click(function () {
    $('#menu').slideToggle('slow');
    $(this).toggleClass('active');
    });
    </script>

      補足日時:2017/07/16 17:50
  • ご回答ありがとうございます。
    教えていただいたコードに変更して試してみましたが、
    状況は変わらずボタンでしか操作できないようです。
    ただ、コードは非常に簡素化されてスッキリしました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/07/16 18:26
  • ありがとうございます。
    こちらのコードで試してみたところ、
    パソコンでは思い通りの動作になりました。

    ただ、タブレットやスマホでタップしても反応しません。
    これをタップでも可能にするにはどうすればいいでしょうか?

    No.4の回答に寄せられた補足コメントです。 補足日時:2017/07/16 18:48

A 回答 (4件)

普通にボタンでメニューだしたり消したりならこれでいいのでは?



<script src="ttp://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function(){
$('#btn').on('click',function () {
$('#menu').slideToggle('slow');
});
});
</script>
<button type="button" id="btn">menu toggle</button>
<nav id="menu">
<ul>
<li>Menu 1</li>
<li>Menu 2</li>
<li>Menu 3</li>
</ul>
</nav>
この回答への補足あり
    • good
    • 0

ああ、ごめんなさい、ボタン以外のクリックで閉じるんでしたね



$(function(){
$(document).on('click',function () {
$('#menu').slideUp('slow');
});
$('#btn').on('click',function (e) {
$('#menu').slideToggle('slow');
e.stopPropagation();
});
});
この回答への補足あり
    • good
    • 1
この回答へのお礼

その後、自己解決しました。
いろいろと教えていただきありがとうございました。

お礼日時:2017/07/19 21:50

いずれにしろHTMLソースがないとなんとも言えないですね

    • good
    • 0

$('#menu').each



idで示される要素は一つしかないのでeachを使うような運用が
されているのはおかしいのでは?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!