#javascript #jquery #jquery-animate
#javascript #jquery #jquery-анимировать
Вопрос:
Я новичок в jQuery. Я пытаюсь скрыть div, на который я нажал, а затем нажать на 4 соседних с ним divs, используя animate. После этого я хочу добавить еще 4 divs через пробел после выбранного div.
Я пробовал это
Вот мой код
(function () {
$('#ccc').on('click', '.box', function () {
var i = 0;
$(this).fadeOut().nextAll().slice(0, 4).animate({
top: '100px'
}, function () {
i ;
if (i == 4) {
$(this).after('<div class="lt box"></div><div class="rt box"></div><div class="lt box"></div><div class="rt box"></div>');
}
});
});
})();
Вот скрипка:http://jsfiddle.net/ue7Gp/2
Заранее спасибо
Ответ №1:
Это заняло некоторое время, но попробуйте эту СКРИПКУ. Дайте мне знать, если это не желаемая функциональность. Надеюсь, это поможет. Основная проблема с опубликованным вами оригиналом заключалась в том, что сохранялся стиль top: 100px, что вызывало этот пробел.
ОБНОВЛЕНИЕ: Я настроил javascript так, чтобы обратный вызов анимации вызывался только один раз, чтобы вы могли избавиться от своего счетчика.
РЕДАКТИРОВАТЬ 2: Я обновил скрипт и код ниже, чтобы отразить ваш запрос о том, что поле с нажатой кнопкой не удалялось. Я надеюсь, что это поможет
(function () {
$('#ccc').on('click', '.box', function (e) {
var i = 0;
$(e.currentTarget).fadeOut();
$(e.currentTarget).nextAll().stop().animate({
"top": "220px"
}).promise().done( function () {
$(e.currentTarget).after('<div class="lt box"></div>
<div class="rt box"></div><div class="lt box"></div>
<div class="rt box"></div>').remove();
$(".box").removeAttr("style");
});
});
})();
.box {
width:100px;
height:100px;
background-color:red;
position:relative;
margin-bottom: 10px;
float:left;
margin:5px;
}
#ccc {
width:220px;
}
Комментарии:
1. Спасибо .. но нажатый div не скрывается
2. Я обновил код и скрипту, чтобы отразить ваш запрос на удаление поля при нажатии. Если вы хотите скрыть все поля с щелчками вместо их удаления, дайте мне знать, и я покажу вам, как это сделать. Надеюсь, это поможет.
Ответ №2:
У меня это работает для вас, насколько я понимаю ваш вопрос. Этого должно быть достаточно, чтобы направить вас на правильный путь! Левый и правый поплавки не идеальны, IMO. Надеюсь, это поможет!
Обновленная скрипка:http://jsfiddle.net/ue7Gp/3
JS:
$('#ccc').on('click', '.box', function () {
$(this).fadeOut(function(){
if ($(this).hasClass("lt")){
var startwith = "lt";
var endwith = "rt";
} else {
var startwith = "rt";
var endwith = "lt";
}
for (x=0; x<2; x ){
$(this).parent().prepend($('<div class="' startwith ' box"></div><div class="' endwith ' box">').hide().fadeIn("slow"));
}
});
});
Комментарии:
1. Это было очень полезно с вашей стороны, но я хочу анимировать нажатие div вниз, чтобы divs в центре перекрывались при нажатии