Во-первых, то, как вы прикрепляете события, нарушено. Я не знаю, это просто поспешность в вопросе или реальная ошибка в вашем коде, но вот правильный способ установить ваш обработчик:
$("#button").click(function(evt) { // <- you need to pass it a function!
$(this).unbind('click').next()
.toggle("slow",function(){$('#button').bind('click')});
});
Но на вашу проблему. Я думаю, вам будет полезно использовать функцию one
jQuery. Как только обработчик кликов вызывается, он удаляется как обработчик кликов; поэтому он выполняется только один раз для одного клика. Чтобы снова включить обработчик кликов после анимации, я думаю, вы правильно поняли; повторно привяжите его после завершения анимации.
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;
}
person
geowa4
schedule
22.09.2009