Это потому, что вы неправильно поняли значение функции .click()
.
.click()
устанавливает функцию-обработчик каждый раз, когда событие щелчка вызывается из выбранной DOM.
Поскольку вы вызвали еще один .click()
в функции обратного вызова .slideUp()
, вы фактически заменяете функцию-обработчик.В вашей текущей логике очевидным решением является бесконечный обратный вызов после каждого клика, например:
jQuery(".click-on").click(function(){
jQuery(".box").slideUp(2000, function(){
jQuery(".click-on").click(function(){
jQuery(".box").slideDown(500,function(){
jQuery(".click-on").click(function(){
jQuery(".box").slideUp(2000, function(){//Repeating callbacks... ...
});
});
});
});
, и, если серьезно, это очень плохо.Такую реализацию делать не следует.
Вместо этого лучше проводить условную проверку для каждого клика, поэтому логика сама определит, следует ли вызвать .slideUp()
или .slideDown()
.Это должно быть похоже на
$(".click-on").click(function(){//you can also use $ instead of jQuery
//do some conditional check here
if(isSlidedUp)$(".box").slideDown(1000);
else $(".box").slideUp(1000)
});
или даже лучше, если вы используете .slideToogle()
.
$(".click-on").click(function(){
$(".box").slideToggle(1000)
}