jQuery fadeout은 콜백을 반복해서 실행합니다. 왜 이것이 어떻게이를 방지 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1234154

문제

내 방법은 div 박스를 사라지고 메소드를 호출하는 콜백이 있습니다.

function closeWindow(windowIdPrefix, speed) {
    $("#" + windowIdPrefix + "_ViewPanel").fadeOut(speed,
        function() {
            resetWindow(windowIdPrefix);
            numWindowsOpen--;
        }
    );
}

function resetWindow(windowIdPrefix) {
   alert("resetting window");
}

이것이 실행되면 (버튼을 클릭) ResetWindow에서 몇 번 실행하는지 알 수 있습니다.

그것은 영원히 실행되는 것처럼 보이지만, 알림 창을 닫을만큼 오랫동안 앉아 있지 않았습니다.

나는 약간의 연구를하고 jQuery 문서를 읽었습니다.

콜백 (선택 사항) 기능
애니메이션이 완료 될 때마다 실행될 함수, 각 요소에 대해 한 번 실행합니다.

그래서 나는 단지 1 개의 div 만 퇴색하고 있지만, 그것은 1로 간주합니까? Div가 가지고있는 각 어린이 요소마다 1 개가 있습니까?

기술적으로 그들은 내부 요소가 외부 디브로 사라지기 때문에 애니메이션을 받고 있지만, Firebug에서 JavaScript를 보면 외부 디브 만 퇴색하면 불투명도/디스플레이가 변경되었습니다.

이것이 일어나는 일이라면 콜백이 한 번만 실행되도록하려면 어떻게해야합니까?

편집하다: 그것은 라인이었다 numWindowsOpen--; 나는 기능 전에 numwindowsopen을 정의하지 않았으므로 어떤 이유로 전화를 여러 번 일어난 이유는 ... 왜 이런 일이 일어나고 있는지 설명 할 수 있습니까?

도움이 되었습니까?

해결책 2

문제는 Numwindowsopen이 줄어들 기 전에 선언되지 않았다는 것이었다.

다른 팁

콜백은 선택기와 일치하는 각 요소에 대해 한 번만 호출해야합니다. 콜백에 직접 경고 메시지를 넣을 때 여러 경고가 표시됩니까?

function() {
    alert('Test');
    resetWindow(windowIdPrefix);
    numWindowsOpen--;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top