2012-05-05 3 views
0

이 질문에 대한 질문이 이미 제기되었지만 Google에 적합한 키워드를 찾을 수 없습니다. 나는 내 질문에 대한 좋은 제목조차 찾을 수 없다. 나는이 작업을 수행 할 수 :코드가 끝나기 전에 CSS가 변경됩니다.

$(".selector").click(function() { 
    $(this).css("background-color", "red"); 
    if (confirm("Do you want to do this ?") { 
     // do this 
    } else { 
     $(this).css("background-color", "transparent"); 
    } 
}); 

그러나 CSS를 변경 I 확인 후에 만 ​​발생합니다. 확인 전에 (또는 확인 중에) 어떻게 발사 할 수 있습니까?

감사합니다.

답변

1

지연 추가 (단지 0 밀리 초)라는 간단한 문제 일 것입니다. 그러면 확인 메시지가 나타나기 전에 페이지가 다시 표시됩니다.

$(".selector").click(function() { 
    $(this).css("background-color", "red"); 
    var _this = this; 
    function confirmCode(){ 
     if (confirm("Do you want to do this ?") { 
      // do this 
     } else { 
      $(_this).css("background-color", "transparent"); 
     } 
    } 
    setTimeout(function(){confirmCode()}, 0) 
}); 

편집 : 추가 된 전체 코드가 작동

+0

! 어쩌면 일부 jquery 마법과 함께, 다른 기능이 필요없는 해결책을 기대했지만 이것은 자바 스크립트 제한이라고 생각합니다. 사실 확인 메시지가 나타나기 전에 다시 칠할 필요가 없습니다. 나는 확인 대화 중에 "있을"수 있습니다. 하지만 1 시간을 기다리더라도 ok를 클릭 할 때까지 다시 칠하지 않으며 코드가 종료됩니다. – Matthieu

+0

@Matthieu 예, CSS와 일관된 브라우저 버크입니다. CSS 변경 사항이있는 대화 상자에는 불행하게도이 작업이 필요합니다. –

+0

새로운 기능을 setTimeout에 전달할 필요가 없으므로 다음과 같이 호출 할 수 있습니다. setTimeout (confirmConde, 0); – robrich

관련 문제