2013-07-03 26 views
23

Bunu soruyor gibi görünen pek çok soru var, ama sonunda tek istedikleri .click olayları eklemek değil. .each ve böylece genel olarak kabul edilen cevap, hepsinde $("body").on("click", ".selector", function(){}); içerir ve bu kesinlikle ben değil istemek.JQuery'de dinamik nesneler üzerinde .each'i kullanma?

Üretilen girdilerim var ve her birinin değerini aynı anda değiştirmem gerekiyor. Normalde $(".inputs").each(function(){$(this).val("new-value")}; ya da bu hatlar boyunca bir şeyler yapardım, ancak dinamik yönü yüzünden yapamam.

$("body").on("each", ".inputs", function(){}); Nasıl Yaparsınız?

+1

Dinamik olmaları neden önemlidir? – Esailija

+5

Bu durumu daha açık bir şekilde açıklarsanız yardımcı olur, çünkü bu soru olduğu için çok anlamlı değildir. – Pointy

+1

"Dinamik yönünden dolayı" bir noktada değerleri değiştirmek istediğinizde ... ne zaman? –

cevap

5

Aslında setTimout iç .each etmek kadar basit.

setTimeout(function(){ 
    $(".inputs").each(function(){$(this).val("new-value")}); 
}, 5000); 
+0

Neredeyse aynı soruya sahibiz ve başlangıçta düşündüklerimiz çünkü .each yeni eklenen öğeleri bulamıyor. SetTimeout'un neden dinamik olarak eklenen elemanlar için .on'u neden yaptığı hakkında daha fazla bilgi verebilir misiniz? – user938363

+0

setTimeout, kodu belirli bir süre sonra çalıştırır. Bu yüzden setTimeout, eklediğiniz öğeler bulunduğundan sonra çalışacak kadar uzunsa, o zaman işe yarayacaktır. Öğeleriniz eklenmeden önce çalışırsa, işe yaramaz. Kullanıcının ekranla etkileşimde bulunacağı durumda, yukarıda yaptığım gibi bir şey yapmamak en iyisi, çünkü yükte yapıyordum. İşlevi başka bir komut dosyasına koyarsanız ve tüm kullanıcı etkileşimi tamamlandıktan sonra bunu tamamlamanız gerekir. –

2

$(".inputs").each(function(){$(this).val("new-value")};, dinamik elemanlarda mükemmel şekilde kullanabilirsiniz. Bir öğeyi dinamik olarak ekledikten sonra komut dosyasını yeniden çalıştırmanız yeterlidir.

Yorumlardan, 'her' hakkında bazı yanlış anlamalar olduğunu düşündüm. 'Her' bir olay değildir ve 'her' denirse hiçbir olay kovulmaz. eklenen yeni elemanlar ile

setInterval(function(){ $(".inputs").each(function(){$(this).val("new-value")}; },500); 
+0

O * bunu yapabilirdi, ama neden, $ (". Inputs") val ("yeni değer") olduğunda, '' da çalışır? – Pointy

+0

Yeniden çalıştıramazsan ne olur? Yani body.on'un faydalarından faydalanın mı? –

+0

@Pointy Bu betiği basitleştirdiğini düşündüm, ama aslında her bir girdi için farklı olan bir şeye değeri ayarlamak istedim. o_O'da, öğeleri dinamik olarak ekleyebiliyorsanız, bu komut dosyasını yeniden çalıştırabilirsiniz. Öğeleri dinamik olarak nasıl eklersiniz? Bu senaryo için bazı scriptler gerekiyor mu? –

3

$.each eser: Eğer onlar bir zamanlayıcı gerekiyordu eklendiğinde üzerinde hiçbir kontrole sahip çünkü eklenen elemanların takip etmek istiyorum. farklı bir şey her zaman yapmak

http://jsfiddle.net/4SV7n/

:

http://jsfiddle.net/4SV7n/1/

+1

Tabii ki işe yarıyor. İstediğim zaman senaryosu çağırmanın lüksüne sahip olsaydım kolay olurdu. Ne yazık ki, .on'un faydalarına ihtiyaç duyduğum nokta, o kontrole sahip olmamam. –

+0

Konuştuğunuz şeyde bir çeşit girişim yapabileceğiniz bir keman yapabilir misiniz? Ne yapmaya çalıştığını anlamaya zorlanıyorum. –

+0

Bunun sebebi, eğer herhangi bir olay olmaksızın herhangi bir olay olmadan işlev yapmamız gerekiyorsa ne yapmamız gerektiğini tıklamaktır. –