programing

Jquery TimeOut 함수를 중지/오버라이드하는 방법

topblog 2023. 3. 19. 17:49
반응형

Jquery TimeOut 함수를 중지/오버라이드하는 방법

페이지 상의 사용자 액션에 대한 응답으로 화면 상단에 알림 메시지를 표시하는 작은 jquery 스니펫이 있습니다.통지는 동적 콘텐츠가 포함된 Ajax 작업 후에 표시되는 경우가 많습니다.

예를 들어 다음과 같습니다.

$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast");
setTimeout(function() {$("#mini").animate({height: "hide", opacity: "hide"}, "medium");}, 3000);

통지는 사용자가 2개 이상의 액션을 연속적으로 실행하는 경우를 제외하고 정상적으로 동작합니다.단, 이 경우 TimeOut 함수는 자신을 혼란스럽게 하고 두 번째 메시지는 이전 3000밀리초 이내에 도착한 것으로 보입니다.

새로운 액션이 실행될 경우 이전 알림을 "삭제"할 수 있는 방법이 있습니까?액션/셀렉터에는 문제가 없고, 타임아웃 기능만 있으면 됩니다.멈추거나 무시하거나 둘 중 하나죠아니면 메시지가 사라지기 전에 몇 초 동안 화면에 남아 있게 하는 더 나은 대안이 있을까요?

감사해요.

첫 번째로, Return 값을 저장합니다.setTimeout기능:

// Set the timeout
var timeout = setTimeout(function()
    {
        // Your function here
    }, 2000);

그럼 타임아웃을 끝낼 준비가 되면...전화만 하면 돼clearTimeout이전 호출에서 저장된 값을 사용하여setTimeout.

// Then clearn the timeout
clearTimeout(timeout);

.stop()을 사용할 수 있습니다.

일치하는 요소에서 현재 실행 중인 애니메이션을 중지합니다.

jQuery 1.4에는 다음과 같은 애니메이션 지연을 처리하는 방법이 내장되어 있습니다.

$("#mini-txt").html("Thank you!");
$("#mini").fadeIn("fast").delay(3000).animate({height: "hide", opacity: "hide"}, "medium");

나중에 애니메이션 대기열을 정리할 때 다음을 수행할 수 있습니다.

$("#mini").stop(true);

그러면 지연 500ms로 기능 실행 후 타임아웃이 지워집니다.

var timeout = setTimeout(function(){

/* YOUR FUNCTION */

}, 500, function(){
   clearTimeout(timeout);
});

언급URL : https://stackoverflow.com/questions/2578628/how-to-stop-override-a-jquery-timeout-function

반응형