2013-03-28 9 views
5

Bu işe yaramazsa

$block.insertAfter(form); 

window.setTimeout(function() { 
    $('.date', $block).datetime({ 
     userLang: 'en', 
     americanMode: true 
    }); 
}, 1000); 

datetime() Ben sınıfa date ile birlikte bir giriş elemana bağlama am bir eklenti. Açıkçası # 1 çalışmıyor çünkü bu öğe hala DOM'de mevcut değil, 1 saniyelik çalışma bekliyor. Ama bu hacky. JQuery'yi insertAfter() yöntemi veya başka bir yol için geri arama kabul etmek için nasıl uzatabilirim?

$(function() { 
    $block.insertAfter(form); 

    $('.date', $block).datetime({ 
     userLang: 'en', 
     americanMode: true 
    }); 
}); 

Ve bu tarih saat kütüphane yüklenir sonra oluşur emin olun:

+0

'.promise' ve [' .done'] (http://api.jquery.com/deferred.done/) –

+0

Peki ya ilk olarak .datetime() ve sonra insertAfter()? DOM'den ayrılmış formu oluşturun, sonra datetime öğesini çağırın ve DOM'a ekleyin. –

+3

# 1 nasıl çalışmıyor? Eklendiğinde DOM'da mevcut olmalıdır. 'insertAfter' senkronize, böylece' form'dan sonra '$ block' ekledikten sonra kullanılabilir. Ve .datetime yöntemini çalıştırdıktan sonra yeterli olması gerekir. 1 saniye beklemek (veya herhangi bir zaman) önemli olmamalıdır. Bir şey mi eksik? Ya ne $ block.insertAfter (form) .find ('. Date') kullanılırsa? Datetime ({}); '? Form nedir? Dinamik olarak oluşturulmuş bir jQuery nesnesine bir başvuru olup olmadığını merak ediyorum ('$ ("

")') veya bir DOM öğesine bir başvuru ('$ (" form.class1 ")'). Öğe DOM'ta değilse – Ian

cevap

2

belge hazır sözler kodunuzu sarın. Yani, bu <script> etiketi, <script src="datetime.js">'dan sonra olmalıdır. Ve async özniteliğinin <script> etiketlerinde ayarlanmadığından emin olun.

İlgili konular