2011-07-06 25 views
7

dinamik bir öğe oluştururken biliyorum, gibi bir şey kullanmak zorunda nasıl Bunu 'u yayınlıyorum, böylece dinamik olarak oluşturulmuş öğelerle etkileşim kurabilirim.datepicker canlı Yapımı JQuery

+1

Yani '.datepicker ({})' belli unsurları dinamik olarak DOM yüklenir olarak çalıştırmak istiyor? – Luke

cevap

11

göre: Jquery .live works but not with .datepicker

Bu çalışması gerekir:

$("#tdInput1").live("click", function(){ 
    $(this).datepicker({ 
     inline: true 
    }); 
}); 

düzenleme: Bu cevap jQuery eski sürümleri içindir. JQuery 1.9+ için lütfen Vishal'in cevabını deneyin.

+0

bir cazibe gibi çalıştı. Teşekkürler! – craigtb

7

İki farklı şeyle uğraşıyorsunuz. jQuery's live olay ciltleme içindir, datepicker ise bir olaya özel olarak bağlı değil, aynı zamanda bir anda bir öğeye işlevselliği ekler. jQuery aslında bir atası elemana olay işleyicisi ekler ve (javascript yolu olayları kabarcık kadar sayesinde) o olaylarla

tek nedeni live eser olduğunu, atası aslında olayı ve delege alır o geldi sanki elemandan. Prensip karmaşıktır, fakat uzun ve kısa, sadece olaylarla çalışabilir.

Tarih seçici işlevini eklemek isterseniz, oluşturulduktan sonra yeni öğede datepicker işlevini çağırın.

+0

Teşekkürler .. bu sorunun cevabını bulana kadar uzun zamandır çözmeye çalışıyorum. – user1862764

19

kabul çözüm .. klavye odağını olayları ile çalışmaz bu yüzden bu kadar değiştirmek zorunda: .live yöntemini içermez

$('.parent').on('focusin', '.datepicker', function(e) { 
    $(this).datepicker(options); 
}); 

jquery 1.9.1 beri .on için .live değiştirmek zorunda kaldı . Yukarıdaki klavye olayları yanı sıra fare olayları için çalışır.

+0

Sadece bunu denedim, ancak bir tarih seçimi yönteminin olmadığı konusunda bana hata veriyor. –

+0

@Sanyamjain'e jQuery'nin hangi sürümünü kullandınız? – Vishal

+0

Ve [jQueryUI] (http://jqueryui.com/) kitaplığını dahil ettiniz mi? – Vishal

0

ben daha uygun bir çözüm olduğunu düşünüyorum:

$('input.datepickerClass').live('focus', function(){ 
    if (false == $(this).hasClass('hasDatepicker')) { 
     $(this).datepicker({ options }); 
    } 
}); 
+0

Lütfen kaynak kodundan sadece yanıt almaktan kaçının - ne yaptığınızı açıklayın, bu yüzden okuyucular ne söylemeye çalıştığınızı ve neden söylendiklerini anlayın. –