2013-02-14 5 views
3

jQuery, 익명 함수 및 지연과 관련해서는 근본적인 것이 빠져 있습니다.지연이있는 jQuery 토글 클래스는 한 번만 작동합니다.

다음 코드는 페이지로드 당 하나만 작동합니다 (클래스를 추가 한 다음 1 초 후에 제거하고 다시 클릭하면 클래스가 추가되지만 클래스를 제거하지는 않습니다). 페이지, 내가 페이지) 다시로드하지 않는 그러나

var jElement = $(currElem); 
jElement.addClass("highlight") 
.delay(1000) 
.queue(function(){ 
$(this).removeClass("highlight"); 
}); 

내가 매개 변수로 (존재하지 않는) 함수 호출을 추가하고, 내 익명의 함수를 호출하는 경우, 다음 추가/클래스 조합 제거는 무기한으로 작동합니다.

var jElement = $(currElem); 
jElement.addClass("highlight") 
.delay(1000) 
.queue(function(randomFunction){ 
$(this).removeClass("highlight"); 
randomFunction(); //this makes it seemingly 'miraculously' work?? 
}); 

사이드 참고 :

var jElement = $(currElem); 
jElement.addClass("highlight") 
.delay(1000) 
.queue(function(randomFunction){ 
$(this).removeClass("highlight"); 
// this does NOT work; if I dont actually call the 'randomFunction' 
// so that function, even though it does nothing; must somehow cause 
// the implicit call of 'dequeue()' ?? 
}); 
+0

정확히 위의 코드를 달성하기 위해 노력하고있는 것을 알려주세요 다음과 같이 우리는 그것을 사용할 수 있습니다. – Venemo

+0

나는 유효한 정보가 포함되지 않은 입력 필드에 대해 "임시 강조"를 모방하려고했습니다. [폼 유효성 검사 스크립트의 경우]. 내가 전달한 함수의 이름이 '다음'인지 아닌지에 관계없이 내 정확한 코드가 작동한다고 생각했습니다. 누군가이 동작을 설명 할 수 있습니까? 함수를 전달하기에 충분하지 않은 경우 익명 함수 내에서 호출해야합니다. 함수 오버로딩이이 암시적인 'dequeue()'동작을 어떻게 일으키는 지 알 수 있었지만 트리거 자체는 익명 함수 내부에 존재합니다. –

답변

2

randomFunction 실제로 next 및 참조합니다 .dequeue 방법으로 불린다. 이것을 호출하면 큐가 큐의 다음 항목으로 계속 이동합니다.

http://api.jquery.com/queue/

5

이 기적은 없습니다. 이 동작은 .queue()의 설명서에 기록되어 있습니다. .queue()에 기능을 추가 할 때, 우리는 라인에서 다음 함수가 실행되도록 .dequeue() 결국라고되어 있는지 확인해야

참고. jQuery를 1.4, 제 인자와 같은 다른 함수를 전달 불리는 함수로서

$('#foo').slideUp().queue(function() { 
    alert('Animation complete.'); 
    $(this).dequeue(); 
}); 

. 호출되면 자동으로 다음 항목을 대기열에서 제외하고 대기열을 계속 이동합니다.

$("#test").queue(function(next) { 
    // Do some stuff... 
    next(); 
}); 
+0

너무 빨리 대답 한 모든 분들께 감사드립니다. 나는 queue()에 대한 API를 보았고 dequeue() 및 next() 설명에 도달하기 직전에 극도로 압도 당했다. 저는 거의 도움을 요청하지 않으며 일반적으로 이런 사이트 덕분에 스스로 답을 찾지 만, 잠시 동안 나를 좌절 시켜서 제가 물었습니다. jQuery (및 다른 언어)의 기초를 익혔다 고 확신하면이 커뮤니티를 정말 좋아하고 기꺼이 기여할 계획입니다. –

관련 문제