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