Во-первых, то, как вы прикрепляете события, нарушено. Я не знаю, если это просто поспешно задать вопрос или настоящая ошибка в вашем коде, но вот правильный способ установить ваш обработчик:
$("#button").click(function(evt) { // <- you need to pass it a function!
$(this).unbind('click').next()
.toggle("slow",function(){$('#button').bind('click')});
});
Но на твою проблему. Я думаю, что вы выиграете от использования jQuery's one
function . Как только обработчик щелчка вызывается, он удаляется как обработчик щелчка; следовательно, он выполняется только один раз , для один щелчок. Чтобы снова включить обработчик щелчков после анимации, я думаю, вы поняли это правильно; повторно связать его после завершения анимации.
function clickHandler(evt) {
$(this).next().toggle("slow",
function() {
$('#button').bind('click', clickHandler);
});
}
$("#button").one('click', clickHandler);
Если использование one
слишком медленное для вас, самым быстрым способом было бы также добавить javascript прямо на href
привязки. Но вам нужно будет переключить глобальную логическую переменную, когда вы будете готовы снова выполнить.
<a href="javascript:clickHandler(); return false;">...</a>
function clickHandler() {
if( someBoolean ) {
someBoolean = false;
//do stuff
}
someBoolean = true;
}