2010-08-04 3 views
0

이상한 질문입니다. 내 블로그의 사이드 바에있는 작은 플러그인을 확장하려고합니다. 플러그인에는 약간의 Ajax가 함께 제공됩니다. 양식이 포함되어 있으며 제출시 d iv#error_msg 또는 div#success_msg을로드합니다 (모두 ajax를 통해).jQuery : if 요소에 ajax 이벤트가로드되면?

이 div 중 하나가 나타날 때 알아내는 방법이 있습니까? 원하는 내용을 얻으십시오. 양식을 제출할 때 사이드 바에있는 양식에 텍스트를 추가하고 싶습니다. 두 div 중 하나 (오류 또는 성공)가 해당 형식으로로드되자 마자 앞에 붙은 요소를 다시 제거하려고합니다.

어떻게 할 수 있는지 알고 계십니까? 나는 플러그인의 소스 코드를 편집하고 싶지 않다!

편집 : checkMsg() 정의되지 않았습니다! 왜?

var check = 0; 

function showLoader() { 
     $('#mc_signup_form').prepend('<span class="loading"> loading </span>'); 
     check = setInterval ("checkMsg()" , 300); 
    } 

function checkMsg() { 
    if ($('.mc_error_msg').length == 0 || $('.mc_success_msg').length == 0) { 
     $('#mc_signup_form .loading').remove(); 
     clearInterval(check); 
    } 
} 
+0

이것은 아약스를 통해로드하는 유일한 것입니까, 아니면 계속 진행중인 다른 것들입니까? –

+0

그냥 아약스 로딩 중입니까? 나는 100 % 확실하지 않다. 그것은 전자 메일 주소를 데이터베이스에 보내고 true 또는 false를 반환합니다. – matt

+0

정말 요소를 제거해야합니까? 그렇지 않다면 jQuery의'live'를 사용하여 양식 제출에 바인딩을 시도한 다음 요소를 추가하거나 이미 존재하는 경우 요소를 변경하십시오. 이벤트가 발생할 수있는 순서로 인해 작동하는지 확실하지 않지만 빠른 시도 가치가 있습니다. http://api.jquery.com/live/ –

답변

0

시간 초과 루프에서 DOM을 쿼리하여 해당 시간이 있는지 확인할 수 있습니다. brutish 그러나 효과적. 앱이 어디에서 ajax 호출을하고 응답 핸들러를 직접 탭하는 것이 더 낫습니다.

+0

감사합니다, 나는 내 게시물을 편집했습니다! 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내 브라우저는 checkMsg()가 정의되지 않았다고 계속 말합니다. 왜 안돼? – matt

0

양식의 onsubmit 속성을 수정하여 간단히 수행 할 수 있지만 텍스트를 제거하는 것은 약간 까다 롭습니다.

JQuery's AOP Plugin을 사용하면 모든 기능 이전 또는 이후에 사용자 지정 이벤트를 실행할 수 있습니다. 플러그인에서 div를 추가하는 js 함수를 찾으면 함수를 실행 한 후 메시지를 제거 할 수 있습니다.

플러그인의 코딩 방법에 따라 훨씬 더 깨끗한 방법 일 수 있습니다. div 추가를 트리거하기 위해 수행중인 작업을 보면 콜백을 삽입 할 수있는 기회가있을 수 있습니다. 또한 질문에 플러그인의 이름을 추가하면 커뮤니티가보다 구체적으로 대답 할 수있게됩니다.