Herkese iyi akşamlar, burada yine çok özel bir soruyla cevap alamadım. Aşağıdaki durumu düşünün: Bir jQuery Nesnim var, $wrapper = $(this);
. Bu,gibi bir init çağrısında olur. Tahmin edebileceğiniz gibi initWrapper()
, jQuery.fn
'daki bir işlevdir. jQuery nesneye nesne ekleme, sonra olay tetikleme
initWrapper()
çağrısında ben
$wrapper.trigger('change')
diyoruz sargı içinde bir elemanın tıklayarak üzerine yürütülen bir geri arama, o zaman bu
$wrapper.getValue = function() { /* typical wrapper function */}
ve benzeri $wrapper
işlev eklemek. Diğer tarafta normal jQuery değişiklik olayını dinliyorum ve işte artık çalışmıyor.
$('#unique-wrapper-id').change(function() {
var $wrapper = $(this);
$wrapper.getValue(); // $wrapper.getValue() is not a function
});
Tamam, bir yerde kaybolursa getValue()
jQuery değişim olayı sürecinde. Sorun değil, ben sadece beklenen ve ben dinleme ucunda jQuery Nesne arkasında DOMElement üzerinde getValue()
yöntemi yürütebileceği gibi çalışır
$wrapper[0].getValue = function { /* typical wrapper function */ }
ile init çağrısında DOMElement kendisi ekleyin edeceğiz.
Ancak iki şey o canımı vardır:
jQuery nesne üzerindegetValue()
yapar değişim olayı sürecinde kaybolmak Neden
- ?
- Neden jQuery kurucusu (
var $wrapper = $(this);
), DOMElement öğesiningetValue()
işlevini jQuery Nesnesine kopyalamıyor?$wrapper
ise
Şimdiden teşekkürler, talep edilmesi halinde bir jsfiddle yapmaya çalışacağım
Eğer $ (eleman) 'arasam içinde
getValue
saklamak mümkün olmalıdır' bu c DOM öğesini düzelten ** yeni ** jQuery nesnesini yeniden çalıştırır. Bu nedenle, orijinal jQuery nesnesine eklediğiniz özellikler kaybolur. – Barmar@Barmar İyi nokta. '$ Wrapper':' $ ('# unique-wrapper-id') '' .change() 'olayından önce tanımlanmışsa,' jQuery() 'tekrar çağrılmadan işleyici içinde' $ wrapper' kullanabilmelidir. Ayrıca, '$ (document) .on ("change", "# unique-wrapper-id") 'veya' $ wrapper.change (handler) ', sonra' $ (this) .data() olay delegasyonunu da ayarlayabiliriz. 'İşleyicinin' getValue() 'içinde – guest271314
Evet, bunu yapabilirsiniz. Ancak, birden çok öğeye ölçeklendirilmez. – Barmar