2011-01-20 16 views
11

Uygulamamdaki tüm AJAX yüklü içerik benim uygulama JQuery komut dosyası tarafından değerlendirilmek istiyorum, normal yüklü içerik aynıdır. Örneğin. JQuery gibi, seçiciler için AJAX yüklenen içerik yoluyla tarar 'modal kutu bağlantıları' vb ajax yüklü içerik üzerinde Re-Run uygulama Javascript

Bütün JavaScript normal HTTP yüklenen sayfalar için çalışıyor, normal document.ready, içinde:

$(document).ready(function(){ 
    // my apps javascript 
}); 

ben jquery seçiciler için yeni yüklenmiş AJAX içeriğini değerlendirmek için document.ready'de bulunan her şeyin yeniden çalıştırılması için .ajaxComplete gibi bir şey kullanmak ister.

$(document).ajaxComplete(function(){ 
    // Re-run all my apps javascript 
}) 

Bunu yapmak için .ajaxComplete koyabileceğim bir kod var mı?

Bunun mantıklı olduğunu umarız, lütfen bilmiyorsa bana bildirin ve soru ayrıntılarını düzenleyeceğim.

+0

Aradığınızı daha fazla açıklayabilir misiniz? Cevabımın hala bir şey eksik olduğunu hissediyorum ve aradığınız cevapları bulmandan emin olmak istiyorum. – jmort253

+0

@ jmort253 - Yardımınız için teşekkürler, avcı'nın cevabı, anlamak istediğim şeydir. –

cevap

12

bir fonksiyona içine senin document.ready her şeyi içlerine alırlar ve sadece yeniden bağlamak için

ya ... Yine bu işlevi diyebiliriz

daha iyi bir yaklaşım live() ve delegate() jQuery yararlanmak olacaktır Bu seçmenlerle eşleşen tüm güncel ve gelecekteki unsurların da bu olaylara bağlı olması için yöntemler. live() kullanarak

örnek: delegate() kullanarak http://api.jquery.com/live/

$('.clickme').live('click', function() { 
    //all elements that exist now and elements added later 
    //with this class have this click event attached 
}); 

örnek: http://api.jquery.com/delegate/

$("table").delegate("td", "hover", function(){ 
    //all current and future td elements in all current tables 
    //have this hover event attached 
}); 
+0

Teşekkürler avcı, bu beni doğru yola koydu. –

+2

jQuery 1.7'den itibaren .live() yöntemi kullanımdan kaldırılmıştır. Olay işleyicilerini eklemek için .on() öğesini kullanın. JQuery'nin daha eski sürümlerinin kullanıcıları .eve() tercihleriyle .delegate() kullanmalıdır. – Nazariy

1

Ne yapmanız gereken bir işlevde yerine anonim kodunuzu tanımlamaktır. Anonim işlevler tekrar kullanılamaz, ancak bir işlev yazarsanız, bu işlev birden çok olaya bağlanabilir.

İlgili konular