2010-08-13 23 views
6

Seçme listesindeki seçili seçeneğin (değiştirildiği zaman) değerini almalı ve metni seçim listesinin yanındaki bir açıklıkta değiştirmeliyim. Sorun, seçim listesinin kimliğini bilmem. Sayfada (5-25 +) çok sayıda farklı seçim listesi vardır ve hepsi dinamik olarak oluşturulur ve bu nedenle .change()'da belirtilen kimliği kullanamam. İşte ne var:Dinamik olarak değiştir ayar değerini seçin

JavaScript:

$("select").change(function() { 
    var str = ""; 
    str = $("select option:selected").text(); 

    $(".out").text(str); 
}).trigger('change'); 

(. Bu işe yaramazsa Tabii ki, her süre içinde seçme tüm değerleri koyar)

HTML:

<select name="animal[]"> 
    <option value="dog">dog</option> 
    <option value="cat">cat</option> 
    <option value="bird">bird</option> 
    <option value="snake">snake</option> 
</select> 
<span class="out"></span> 

Neyi eksik?

$("select").change(function() { 
    var txt = $(this).val(); 
    $(this).next('span.out').text(txt); 
}).trigger('change');​ 

cevap

14

böyle bir şey deneyin: jQuery en next

0

Sesler . Bunu deneyin

str = $(this).find("option:selected").text(); 
+0

Bu yayılma metin eklemek için çalışabilir ancak seçme değer elde yardımcı olmayacaktır. – Scott

3

bu deneyin kullanmak istediğiniz gibi

+0

http://stackoverflow.com/questions/48239/getting-the-id-of-the-element-that-fired-an-event-using-jquery gibi görünen olay işleyicilerinde "bu" ifadesi, Etkinlik. – yilmazhuseyin

0

Sen olay geri çağırma içinde $(this) kullanılarak değiştirilen eleman alabilirsiniz:

$("select").each(function(){ 

    var select = $(this), 
     out = select.next(); 

    select.change(function() { 
     out.text(select.val()); 
    }); 

}).trigger('change'); 
1

hattı

str = $("select option:selected").text(); 

değiştirmeyi deneyin:

$("select").change(function() { 
    var str = ""; 
    str = $(this).find(":selected").text(); 

    $(".out").text(str); 
}).trigger('change'); 
İlgili konular