2009-04-11 1 views
5

아약스로드 된 탭의 내용에 몇 가지 코드를 적용하려면 어떻게해야합니까? 로드 된 내용 내에서 $ (document) .ready를 사용했지만 CSS 스타일이로드되지 못하게했습니다 (이유를 모르겠 음).아약스 탭을 불러 온 후의 콜백

콜백 기능이 있습니까? $ (document) .ready와 스타일을 다른 방법으로로드 된 문서 안에 사용해야합니까?

로드 된 문서 안에 $ (document) .ready를 사용하는 것이 좋으면 jquery 및 해당 플러그인에 대한 참조를 포함해야합니까?

답변

8

당신이 load event를 시도 사용하고 계십니까? 탭의 내용이로드 될 때 호출해야합니다.

일반적으로로드 된 요소를 새 페이지로 취급하지 말고 $ (document) .ready를 호출해야합니다. 이것은 새로운 페이지는 아니지만 DOM에 추가 된 새로운 요소입니다. 모든 Ajax 메소드에는 데이터가 성공적으로로드 될 때 호출되는 콜백 메소드가 있습니다.

$('#nav_tabs').tabs({ 
    select: function(event, ui){ 
     var url = $.data(ui.tab, 'load.tabs'); 
     if (url == '?ak=/account/logout') { 
      //exclude the logout from using ajax 
      location.href = url; 
      return false; 
     } 
     return true; 
    }, 
}).bind('tabsload',function(event, ui){ 
    alert('The tab is loaded. What now?'); 
}); 
+0

로드 이벤트는 모든 탭에 적용됩니다. 그 이벤트를 사용하여 선택한 탭을 검색하여 새 코드를 적용해야합니까? 모든 탭에는 표나 폼과 같이 다른 DOM이 있습니다. – Gerardo

+0

나는 이벤트를 직접 사용하지 않았다. 콜백 메소드에 전달 된 이벤트 또는 ui 매개 변수에서로드 된 탭을 가져올 수 있는지 확인하십시오. 유감스럽게도 설명서에는 이러한 매개 변수가 설명되어 있지 않습니다. 탭의 DOM을 사용하면 효과가 있지만 "더티"솔루션입니다. – kgiannakakis

+0

규칙에 따르면, 나는 event.target.id가 내용이로드 된 탭의 ID가 될 것이라고 생각합니다. firebug 및 console.log를 사용하여 조사하십시오. :) –

5

아약스를 통해 콘텐츠를로드하는 데 사용하는 코드는 무엇입니까? load 또는 ajax과 같은 jQuery 명령을 사용하는 경우 코드를 콜백 함수에 넣는 것이 좋습니다. 예를 들어, load

$('#myUITab').load('anotherPage.html', function() { 

    // put the code you need to run when the load completes in here 

}); 
+0

나는 탭의 방법을 사용하고 있습니다 : $ ('# 콘텐츠')를 탭 ('추가', '탭/editor.php', 데이터를 [I] .nombre). – Gerardo

0

이 작업을 수행하는 또 다른 방법은 ajaxComplete을 사용하는 것입니다 UI "탭"은 콜백 메소드를 제공합니다. 아래를 확인하십시오!

$("#tabs").tabs({ 
    ajaxOptions: { 
     error: function(xhr, status, index, anchor) { 
      $(anchor.hash).html(
       "error occured while ajax loading."); 
     }, 
     success: function(xhr, status) { 
      //alert("ajax success. "); //your code 
     } 
    } 
}); 
0

당신은 tabsload 이벤트를 사용할 수 있습니다

2

jQuery를 : http://jqueryui.com/demos/tabs/#event-load

는 아래의 예에서 일할 수있는 방법을 참조하십시오

$("#loading_comtainer").ajaxComplete(function(event,request, settings){ 
    alert("ajaxCompleted"); 
});