Soru jquery yeni öğeleri görmüyor


Ben JQuery için yeniyim, bu yüzden benimle ayı :).

Basit bir sorunum var:

$(document).ready(function() {

     $("#instrument").change(function() {
         $("#tunings").html("<select id=\"TuningSelector>\"[..]</div>");
     });

     $("#TuningSelector").change(function() {
         DoSomethingWithTheValue();
      }); 

 });

Sorun şu: Cihaz değiştiğinde, betik artık TuningSelector değişikliklerine cevap vermiyor. JQuery yeni TuningSelector öğesini görmüyor ...

JQuery'de bir yenilemeyi mi çağırmalıyım? Böylece yenilenen DOM'yi görüyor mu?


17
2018-05-02 15:51


Menşei




Cevaplar:


Genelde kullanmak istersin üzerinde Böylece işleyiciyi seçiciyle eşleşen yeni öğelere uygular ve DOM'ta daha yüksek bir öğeye temsil eder.

$('body').on( 'change', '#control', function() {
    DoSomething();
});

36
2018-05-02 15:56



.live ("change"), jQuery 1.4'e kadar uygulanmayacak docs.jquery.com/JQuery_1.4_Roadmap#Events - Sam Hasler
@Sam - bunu işaretlediğiniz için teşekkürler. Henüz bir seçimle kullanmamıştım ve destekli listede olmadığını fark etmemiştim. Cevabım bunu yansıtacak şekilde güncellendi. - tvanfosson
Bunu okuyan herkes için .live () .on () lehine önerilmemektedir. - Jay Doughty
Kolon yerine sonunda bir noktalı virgül (;) eklemeniz gerekir. - usefulBee


JQuery olayları ile olayın yeni öğelere uygulanmasını istiyorsanız, .canlı yöntem, jQuery 1.3, bulanıklık, odaklama, mouseenter, mouseleave, değişiklik, olayları canlı olay olarak göndermez, ancak desteklemiyor. (değiştir, gönder ve bulanıklaştır / netle yol haritası jQuery için 1.4)

Alternatif olarak liveQuery Eklenti.


2
2018-05-02 16:19