0

私はjqueryが初めてで、クリックイベントから複数のdivを除外する方法があるかどうか知りたいです。まず、マウスがその外側をクリックしたときに、特定のdivを非表示にする方法を探していました。これは、何らかの結果をもたらした唯一のソリューションです (:not セレクターは機能しませんでした)。#cartbasket div も除外したいので、同じボタンで引き続き #cartbasketList ul を上下に切り替えることができます。いろいろ組み合わせてみましたが、うまくいきませんでした..

html:

<div id="cartinfos">
  <div id="cartbasket"></div>
    <ul id="cartbasketList">
      <li><a href="#">somelink</a></li>
      <li><a href="#">somelink</a></li>
      <li><a href="#">somelink</a></li>
    </ul>
 </div>

CSS:

#cartinfos {
    position: relative;
    display: inline-block;
    text-align: right;
    width: 50%;
    left: 10px;
    padding: 15px 0px;
}

#cartbasket {
    position: relative;
    display: inline-block;
    background: #ff0000;
    width: 40px;
    height: 40px;
}

#cartbasketList {
   position: absolute;
   display: none;
   border-top: 5px solid #ff0000;
   width: 250px;
   height: 400px;
   top: 60px;
   right: 0px;
   background:#fff;
   z-index: 999999;
}

jquery:

  $(function() {

      $("#cartbasket").click(function() {
         $("#cartbasketList").slideToggle("fast");
    });


      $("body").mouseup(function(event) {
        if (event.target.id != 'cartbasketList') {
            $("#cartbasketList").slideUp(100);
        }

    });


    });
4

1 に答える 1

1

クリック イベントを追跡し、特定の要素がクリックされたかどうかを確認する必要があります。

必ず 1 つのクリック イベントのみを使用してください。そうしないと、イベントが泡立ち始め、望ましくない影響を与えます。

$(function() {

    var $cartList = $('#cartbasketList');

    $(document).on('click', function(e) {
        var target = e.target.id;

        if(target == "cartbasket"){
            $cartList.slideToggle('fast');
        }
        else {
            $cartList.slideUp('fast');
        }
    });

});

デモフィドル

于 2014-06-19T22:19:52.210 に答える