о jquery привязать развязать

почему это не работает? и как я могу это исправить?

<!DOCTYPE html>
<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
        $(document).ready(function(){
            $("button").click(function(){
            $("button").unbind("click");
            $("div").show().fadeOut("slow",function(){
                $("button").bind("click");
            });
            })
        })
    </script>
    <style>
        div{width:600px;height:600px;display:none;background:red;}
    </style>
</head>
<body>
    <button>test</button>
    <div></div>
</body>
</html>

person lanqy    schedule 08.11.2010    source источник
comment
вы являетесь пользователем SO в течение 1 года, и до сих пор не форматируете код??   -  person RPM1984    schedule 08.11.2010
comment
Что не работает? Есть ли ошибка?   -  person rahul    schedule 08.11.2010


Ответы (1)


Вы не указываете с чем связать событие click с $("button").bind("click"); (там не делается никаких предположений, оно просто молча ничего не связывает). Вы можете сделать это с помощью именованной функции, которую вы храните, например:

$(document).ready(function() {
  function clickHandler() { 
    $("button").unbind("click");
    $("div").show().fadeOut("slow",function() {
      $("button").bind("click", clickHandler);
      //or: $("button").click(clickHandler);
    });
  }
  $("button").click(clickHandler);
});

Вы можете проверить это здесь. Однако в вашем случае проще просто проверить, скрыт ли <div>, и ничего не отменять/перепривязывать, например:

$(function() {
  $("button").click(function () { 
    $("div:hidden").show().fadeOut("slow");
  });
});

Вы можете протестировать эту версию здесь.

person Nick Craver    schedule 08.11.2010