SORU
5 Kasım 2011, CUMARTESİ


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
5 Kasım 2011, CUMARTESİ


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 

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Major FX

    Major FX

    6 HAZİRAN 2012
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007