내가 문제 자체가 겉보기에, 나는 ... 누군가가 이의 이유에 도움이 되거 수 바라고 있어요 해결 가지고 있지만의 jQuery .remove() 콜백의 호출은 무한 루프를 유발
다음은 두 개의 스냅 샷은 사용자 피드백 메시지가 포함 된 div를 제거하는 것이 동일한 기능입니다. 선택적인 타임 아웃을 사용하기위한 설정입니다. 타임 아웃이 지정되면 setTimeout()을 사용하여 자신을 호출하여 div를 제거합니다. 문제 버전 I은 this.remove를 (전화 먼저 blackbirdjs 등을 이용하여 로그 메시지를 전송) - - 후
함수의 두 버전 사이의 차이점은 여기서 this.remove() 호출된다 이것은 브라우저가 그들을 펌핑 할 수있는만큼 빠른 "제거 피드백 div ..."의 끝내지 않는 로그 메시지로 넘치게됩니다.
그러나 작업 버전에서는 순서를 반대로하고 모든 것이 정상적으로 실행되고 모두가 잘 ...
나는이 사건의 순서가 사소하지만 분명히 아니라고 생각할 것이다. 누가 이런 일이 일어날 지에 대해 좀 더 밝힐 수 있습니까? 이 jQuery 버그 또는 블랙 버드 또는 자바 스크립트의 이상한 버킷 일반적으로 문제가 있습니까?
참고 : - 그것은 내가 돌아 그에게이 그것을 중지 다시 거짓 온 경우 -
내가) (확인 전화를 사용하여 일부 혼합 성공을 거두었 그러나, 제거 호출 후 바로 추가 수익은 영향을 미치지 않았다 .
흥미롭게도, 어느 버전이 IE8에서 제대로 작동하는 것 같습니다. - 이것이 파이어 폭스/도마뱀 문제 일 수 있습니까?
문제 코드 :
function clear_feedback(target_container, timeout){
log.debug("timeout: " + timeout);
log.debug("target_container: " + target_container);
if(timeout == undefined){
log.info("removing target...");
$(target_container).children(".update_feedback").slideUp("slow",
function() {
log.info("Removing feedback div...");
this.remove();
}
);
}
else{
log.info("Setting timeout, THEN removing target...");
setTimeout("clear_feedback('" + target_container + "')", timeout);
}
}
작업 코드 : 난 그냥 같이하지만 다른 맥락에서 문제를 보았다
function clear_feedback(target_container, timeout){
log.debug("timeout: " + timeout);
log.debug("target_container: " + target_container);
if(timeout == undefined){
log.info("removing target...");
$(target_container).children(".update_feedback").slideUp("slow",
function() {
this.remove();
log.info("Removing feedback div...");
}
);
}
else{
log.info("Setting timeout, THEN removing target...");
setTimeout("clear_feedback('" + target_container + "')", timeout);
}
}
gah ..../head-slam-on-desk 나는 아직 이것을 시험 할 기회가 없었고 아마도 다음 (크리스마스 휴가가 연말 연시에 금요일에 시작되었다.) 휴가를 가지지 않을 것이다. 이 오류를 읽은 후에 오류가 꽤 분명해 보입니다 ... 신인의 실수입니다. –
오래 지연되어서 죄송합니다. 첫날 직장에 복귀합니다. 많은 감사합니다! –