Live() dönüşüyor() jQuery
Benim uygulama dinamik olarak açılır listesini ekledi. Kullanıcıya istedikleri kadar ekleyebilirsiniz.
Geleneksel olarak bir WordPress kullanmak 4 ** yöntem bu açılır listesini biri change()
ed iken tespit etmek için kullanıyordum:
$('select[name^="income_type_"]').live('change', function() {
alert($(this).val());
});
JQuery 1.7 olarak, ben bunun için güncellendi.
$('select[name^="income_type_"]').on('change', function() {
alert($(this).val());
});
Docs bakarak, bu son derece geçerli (değil mi?) - ama olay işleyicisi hiçbir zaman tetikler. Elbette, DV 1.7 onayladım yüklü ve çalışan, vb. Hata günlüğüne hata yok.
Neyi yanlış yapıyorum? Teşekkürler!
CEVAP
on
documentation Birleşik Devletleri (bold ;)):
Olay işleyicileri yalnızca seçili öğeleri bağlıdır; kod
.on()
çağrı yapan anda sayfa üzerinde bulunması gerekir.
.live()
eşdeğer gibi bir şey olur
$(document.body).on('change', 'select[name^="income_type_"]', function() {
alert($(this).val());
});
Olay işleyicisi bağlama kadar yakın unsurları mümkünse daha iyi olmasına rağmen, diğer bir deyişle, bir öğe hiyerarşisinde daha yakın olmak için.
Güncelleme:Başka bir soruya cevap verirken, bu da .live
documentation açıklanan öğrendim:
Onun ardılları açısından
.live()
yöntemi yeniden basittir; bu üç olay ek yöntemleri: eşdeğer aramalar için şablonlar vardır$(selector).live(events, data, handler); // jQuery 1.3 $(document).delegate(selector, events, data, handler); // jQuery 1.4.3 $(document).on(events, selector, data, handler); // jQuery 1.7
Nesne bir yöntem '' - jQuery...
özel veri seçiciler jQuery HTML5 kulla...
Nasıl jQuery bir Ajax çağrısı için bek...
Nasıl jQuery ile DOM öğesi yok?...
jQuery erişim giriş gizli değeri...