Переключить (щелкнуть) и связать событие (на документе) - PullRequest
0 голосов
/ 25 февраля 2010

У меня есть кнопка <a>, которая должна переключать выпадающий список Затем он также должен привязать (один раз) событие щелчка к документу, которое при щелчке должно сдвинуть его вверх.

Я начал с этого HTML и JS ... Любые предложения, как сделать эту работу?

HTML

      <a class="a" href="#">continue shopping</a>
      <div class="b">
        <a href="#">continue 1</a>
        <a href="#">continue 2</a>
        <a href="#">continue 3</a>
        <a href="#">continue 4</a>
      </div>

JS

 $(".a").toggle(function(event){
   buttonEvent = $(event.target)
    $(this).addClass("open").next(".a").slideDown(500);

    $(document).one("click",function(e){
    if(!$(e.target).is(".a") && !buttonEvent.hasClass("b")){
        $(".b").slideUp(500)
     }  
  })

 },
 function(){
  $(this).removeClass("open").next(".continueShopCntnr").slideUp(500)
});

Но он все еще глючит .. при повторном нажатии на кнопку "Продолжить покупки" он ничего не делает

1 Ответ

1 голос
/ 25 февраля 2010

Может быть, это будет работать лучше ... он закрывает все открытые при щелчке документа.

РЕДАКТИРОВАТЬ: Фактически протестировал этот код (против предыдущего ответа), и он работает, как я понимаю требования.*

$(".continueShop").toggle(
    function(){
      $(this).removeClass("open").next(".continueShopCntnr").slideUp(500)
    },
    function(){
        $(this).addClass("open").next(".continueShopCntnr").slideDown(500);

        $(document).one("click",function() {
           $(".continueShop.open").each(function() { 
               $(this).click();
           });
         });
     }
);
...