2009-04-11 30 views
5

ajax yüklü bir sekmenin içeriğine bazı kodları nasıl uygularım? Yüklenen içeriğin içinde $ (document). Kullanmayı denedim, ancak css stillerinin yüklenmesini engelledi (nedenini bilmiyorum).ajax bir sekme yüklendikten sonra geri arama

Geri arama işlevi var mı? Yüklü belgenin içinde $ (document) .ready ve stillerini başka bir şekilde kullanmalı mıyım?

Yüklü belgenin içinde $ (document) .ready kullanılıyorsa, jquery ve eklentileri de dahil etmeli mi?

cevap

8

Eğer load event denediniz kullanarak? Sekmenin içeriği yüklendiğinde bu çağrılmalıdır.

Genel olarak yüklenen öğeyi yeni bir sayfa olarak ele almamalı ve $ (document) .ready. Bu yeni bir sayfa değil, DOM'a eklenen bazı yeni öğeler. Tüm ajax yöntemleri, veriler başarıyla yüklendiğinde çağrılan bir geri arama yöntemine sahiptir.

$('#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

Yükleme olayı her sekmeye uygulanır, bu olayı kullanmalı ve seçili sekmeyi yeni kodu uygulamak için içine almalı mıyım? Her sekmede, tabloda veya formlarda gibi farklı DOM vardır. – Gerardo

+0

Etkinliği kendim kullanmadım. Geri arama yöntemine iletilen olay veya ui parametresinden yüklenen sekmeyi alabilirsiniz. Maalesef bu parametreler bu belgeleri açıklamıyor. Sekmelerin DOM'inin kullanılması işe yarayacak, ancak "kirli" bir çözüm. – kgiannakakis

+0

Aşağıdaki kurallar, event.target.id dosyasının içeriğe yüklenen sekmenin kimliği olacağını düşünürdüm. Araştırmak için firebug ve console.log'u kullanın :) –

5

Ajax aracılığıyla içeriği yüklemek için hangi kodu kullanıyorsunuz? load veya ajax gibi bir jQuery komutu kullanıyorsanız, kodunuzu geri arama işlevinin içine koymanızı öneririz. Örneğin, load

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

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

}); 
+0

Bir sekmenin yöntemi kullanıyorum: $ ('# content') sekmeleri ('ekle', 'sekmeleri/editor.php' verilerin [i] .nombre);. – Gerardo

0

Bunu yapmanın bir başka yolu ajaxComplete kullanmaktır UI "Sekmeler" geri arama yöntemini sağlar. Aşağıya bakın!

$("#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

Sen tabsload olayını kullanabilirsiniz:

İlgili konular