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

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011