jQuery 객체의 배열을 잡은 다음 .each ()를 통해 배열에서 각 개별 jquery를 수정합니다.
이 경우 CSS 전환을 활용하기 위해 -webkit-transition-property를 트리거하도록 클래스 이름을 업데이트했습니다.
각 CSS 전환이 시작되기 전에 잠시 멈췄 으면합니다. 다음을 사용하고 있지만 각 업데이트 사이에 지연이 없습니다. 대신, 모두 한꺼번에 업데이트되는 것처럼 보입니다.
function positionCards() {
$cards = $('#gameboard .card');
$cards.each(function() {
setTimeout( function(){ addPositioningClass($(this)); }, 500 )
});
}
function addPositioningClasses($card){
$card
.addClass('position')
}
나는 setTimeout이 이것을 해결하기를 바랬지 만 작동하지 않는 것 같습니다. 각 객체의 각 클래스 이름 업데이트 전에 일시 중지를 수행하는 방법이 있습니까?
답변
나는 이것을 주석으로 추가했지만 이제 올바르게 읽고 내 질문에 답 했으므로 아마도 작동 할 것입니다.
function positionCards() {
var $cards = $('#gameboard .card');
var time = 500;
$cards.each(function() {
setTimeout( function(){ addPositioningClass($(this)); }, time)
time += 500;
});
}
답변
오래된 스레드를 찾아서 미안하지만이 팁은 유사한 문제에 유용 할 수 있습니다.
$cards.each(function(index) {
$(this).delay(500*index).addClass('position');
});
답변
500ms마다 자신을 호출하는 메서드를 만들면 그 트릭을 수행해야합니다. 다음 코드가 작동합니다.
var __OBJECTS = [];
$('#gameboard .card').each(function() {
__OBJECTS.push($(this));
});
addPositioningClasses();
function addPositioningClasses() {
var $card = __OBJECTS.pop();
$card.addClass('position');
if (__OBJECTS.length) {
setTimeout(addPositioningClasses, 500)
}
}
바이올린 테스트 : http://jsfiddle.net/jomanlk/haGfU/
답변
방법에 대한 .delay () ?
또는
function addPositioningClasses($card){
setTimeout(function() { $card.addClass('position')}, 1000);
}
답변
Safari / iOS 만 대상으로하는 경우 애니메이션 시퀀스의 정확한 타이밍을 제어하는 것이 얼마나 중요한지에 따라 JS 시간 초과와 관련된 솔루션을 피해야합니다. 특히 느린 프로세서 나 백그라운드에서 많은 작업이 진행되는 컴퓨터에서 애니메이션이 시간 초과 지연과 동시에 완료된다는 보장은 없습니다. 최신 버전의 웹킷 (모바일 사파리 포함)에서는 @-webkit-keyframes
. Webkit.org에는 이에 대한 멋진 소개가 있습니다 . 실제로 구현하기가 매우 쉽습니다.
답변
이것을 시도하십시오 :
function positionCards() {
$('#gameboard .card').each(function() {
$(this).delay(500).addClass('position');
});
}
솔직히 말해서 … 과거에 $ (this) .delay ()가 어떤 경우에는 오작동했고 다른 경우에는 완벽하게 작동했습니다. 그러나 이것은 일반적으로 DOM 속성 조작이 아닌 jQuery 애니메이션 호출과 함께 사용되었습니다.
.delay ()는 setTimeout과 같은 방식으로 작동하지 않습니다. 자세한 내용 은 jQuery .delay () 문서를 참조하십시오 .
내가 아는 한 $ (). each는 절차 적으로 실행되므로 호출의 다음 반복은 선행 작업이 완료된 후에 만 시작되어야합니다.
답변
이것을 확인하십시오, 나를 위해 잘 작동했습니다! 🙂
jQuery('.optiresultsul li').each(function(index) {
jQuery(this).delay(500*index).animate({ opacity: 1 }, 500,function(){
jQuery(this).addClass('bgchecked');
});
});