2010-08-17 3 views
1

jQuery의 AJAX 이벤트에 대한 구독 요소를 가지고 놀았습니다.jQuery : 데이터를로드하는 요소에 로컬 인 AJAX 이벤트 발생

저는 AJAX 응답을로드하는 데 사용하는 요소가 있습니다. 이 요소는 프로그램의 현재 컨텍스트와 관련된 데이터가있는 경우에만 표시됩니다.

그래서 AJAX 요청이 완료 될 때마다 .show()가 필요하고 쉽게 숨길 수 있다고 생각했습니다. AJAX 요청을 할 때마다 암시 적으로 .show() 요소를 제거해야합니다.

jQuery에는 .ajaxSuccess() 및 .ajaxComplete()가 있습니다. 이것들은 AJAX 요청이 완료/완료 될 때 발생하므로 페이지의 다른 부분에 데이터를로드 할 때 숨겨진 요소는 .show()가됩니다. 내가 이해하지 못하는 것은 대한 이벤트 핸들러를 등록하는 이유는

$('.log').ajaxComplete(function(e, xhr, settings) { 
    if (settings.url == 'ajax/test.html') { 
    $(this).text('Triggered ajaxComplete handler.'); 
    } 
}); 

입니다 :

이 솔루션은 이벤트 핸들러 함수에서 ajaxOptions 매개 변수를 사용하여 (. JQuery와 API 참조 당) 것 같다 $ (this)를 사용할 수있는 것 외에도 특정 요소에 대한 모든 AJAX 요청. 뭔가 빠졌습니까? 요소에 특정한 AJAX 요청에 대한 이벤트 처리기를 등록 할 수 있습니까?

그렇지 않은 경우 .url을 사용하는 대신 이벤트가 발생합니까? 내가 묻는 이유는 페이지 상태를 추적하기 위해 페이지 조각을 광범위하게 사용하기 때문에 AJAX 요청이 데이터를로드 할 때마다 이벤트 핸들러 .show()를 사용하는 것이 더 쉬울 것입니다.

편집 : 게시물 제목 문법. 의미를, 아니면 완전히 요점입니다

$(document).ajaxComplete(function(e, xhr, settings) { 
    if(settings.url == 'ajax/test.html') { 
     $('#foo').text('Triggered ajaxComplete handler.'); 
    } else if(settings.url == 'ajax/another.html') { 
     $('#bar').text('Triggered ajaxComplete handler.'); 
    } 
}); 

않습니다

+0

데이터를로드하는 위치의 몇 가지 예를 들려 줄 수 있습니까? –

+0

0

내 생각, 당신이 뭔가를 원하는 것입니다?

+0

네, 그 말이 맞습니다. 문구를 쓰는 것은 어려운 질문입니다. 내 문제는 요소에 로컬 인 AJAX 이벤트 처리기를 등록하고 싶습니다. 따라서

이있는 경우 $ ('main')에 등록 된 핸들러에 대해서만 $ ('main') load ('bla.html') 할 때 전역 이벤트가 아닌 이벤트가 필요합니다. –