jQuery belirli bir seçenek etiketi metni olsun


1234

Pekala, buna sahip olduğumu söyle:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

'2' değerine sahip olduğumda "Seçenek B" yi almak istersem seçici nasıl olurdu?

Bunun seçilen metin değerinin nasıl alınacağını sormadığını , ancak değer özelliğine bağlı olarak, seçili olsun veya olmasın, bunlardan herhangi birinin alındığını lütfen unutmayın . Denedim:

$("#list[value='2']").text();

Ama bu çalışmıyor.


Bu süre için şunları kullanın:$("#list option").filter(function () { return $(this).html() == "stuff"; }).val();
kale

Yanıtlar:


1122

Eşit listbir özelliğe sahip kimliğe sahip bir öğe arıyor . Ne istiyorsun çocuğu :value2
optionlist

$("#list option[value='2']").text()

4
Bu nickf için teşekkürler. Değeri dinamik olarak almak istiyorsanız bu cevap genişletilmiş: var selectValue = document.getElementById ('list'). Value; var selectOption = $ ("# liste seçeneği [value =" + selectValue + "]"). text (); /// iyi örnek nickf.
Kevin Florida

283
@ Kevin, bu durumda, bunun altındaki cevabı kullanmak isteyebilirsiniz. $('#list option:selected').text()
nickf

6
@nickf, ve daha basit,$('#list').val()
Derek 朕 會 功夫

36
@Derek, val () seçeneğin metnini vermeyecek, bazı durumlarda (söyleyeceğim pek çok şey) aynı olmayan değerini verecektir.
itsmequinn

bazı tarayıcılar kullanıcı için görünmez olan metnin önüne ve arkasına bazen boşluklar ekleyebileceğinden, ancak yanlış değerlerin alınmasına neden olabileceğinden , her zaman .trim()sonra kullanmalısınız.text()$("#list option[value='2']").text().trim()
Hassan ALAMI

1262

2 değeri olan bir seçenek elde etmek istiyorsanız,

$("#list option[value='2']").text();

Şu anda seçili olan seçeneği almak istiyorsanız şunu kullanın:

$("#list option:selected").text();

11
Metin yerine değeri almak için şunu yazmanız gerekir: - $ ("# liste seçin"). Val (); Bunun, sorulan sorunun gerçek cevabı olmadığını biliyorum, ancak yine de Google'dan gelen yeni başlayanlar için bu noktadan bahsetmeyi düşündüm.
Bilgi Özlem

$ ("# Liste seçeneği: seçili"). Metin () ve $ ("# liste seçeneği: seçili").
Attr

Seçilen metni almak için (soru özel olarak sormasa da), bu yöntem seçilen değerin ne olduğunu bilmek zorunda olmadığından daha üstündür.
theJerm

132

Bu benim için mükemmel çalıştı, MySQL tarafından üretilen seçeneklerle iki farklı değer göndermenin bir yolunu arıyordum ve aşağıdakiler genel ve dinamik:

$(this).find("option:selected").text();

Yorumlardan birinde belirtildiği gibi. Bununla hem değer, seçenek değeri hem de metin almak istediğim tüm seçim kutularımla çalışan dinamik bir işlev oluşturabildim.

Birkaç gün önce, bu kodu kullandığım sitenin 1.6'dan 1.9'a jQuery güncellerken, bu çalışmayı durdurdu ... muhtemelen başka bir kod parçası ile bir çatışma olduğunu fark ettim ... neyse, çözüm seçeneği kaldırmak find () çağrısı:

$(this).find(":selected").text();

Bu benim çözümüm ... sadece jQuery'nizi güncelledikten sonra herhangi bir sorun yaşarsanız kullanın.


2
sözde bu WebStorm 8'e göre bunu yapmanın daha etkili bir yoludur.
dbinott

2
Bu cevap anlayışlı olsa ve yaşadığım bir sorunla ilgili bana yardımcı olsa da, nitpick'e, soruyu düzgün bir şekilde cevaplamıyor: Lütfen bunun, seçilen metin değerini nasıl alacağını sormuyor, ancak seçili olsun, bunlardan herhangi biri veya value özniteliğine bağlı olarak.
StubbornShowaGuy

109

Paolo tarafından gönderilen orijinal HTML'ye dayanarak aşağıdakileri yaptım.

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Internet Explorer ve Firefox üzerinde çalıştığı test edilmiştir.


11
Buna bir alternatif: $ ("seçenek: seçildi", bu) .text ()
Doug S

Bu daha iyi bir yanıttır çünkü sadece statik html ve basit javascript olaylarını değil karmaşık senaryoları da açıklar.
16'da oasisfleeting

37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

#listöğede birden çok seçilen değer için .


37
  1. Sayfada yalnızca bir seçim etiketi varsa, 'list' kimliğinin içinde seçim belirtebilirsiniz

    jQuery("select option[value=2]").text();
  2. Seçili metni almak için

    jQuery("select option:selected").text();

24

Takip etmeyi dene:

$("#list option[value=2]").text();

Orijinal snippet'inizin çalışmadığının nedeni, OPTIONetiketlerinizin SELECTetiketinizin alt öğesi olması id list.


19

Bu, bir süredir güncellenmemiş eski bir Soru, şimdi bunu yapmanın doğru yolu kullanmak olacaktır

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Umarım bu yardımcı olur :-)


Bu kesinlikle doğru değil Lütfen bunun seçilen metin değerini nasıl alacağını sormadığını unutmayın
Wesley Smith

17

Seçilen etiketi almak istedim. Bu benim için jQuery 1.5.1'de çalıştı.

$("#list :selected").text();

17
$(this).children(":selected").text()

Ne yazık ki, bu optgroupsizin alt öğe olarak etiketiniz olduğunda selectve seçilen seçenek bu olduğunda işe yaramaz optgroup. Kullanım $("#list option:selected").text();bile bu durumda çalışır
MartinM

13
$("#list [value='2']").text();

Kimlik seçiciden sonra bir boşluk bırakın.


13

Fonksiyonu kullanarak seçilen seçenek metnini alabilirsiniz .text();

işlevi şöyle çağırabilirsiniz:

jQuery("select option:selected").text();

10

Dinamik olarak oluşturulan bir .each (function () ...) öğesiyle "looping" yaparken: $("option:selected").text();ve $(this + " option:selected").text()seçilen seçenek metnini döndürmedi - bunun yerine null.

Ancak Peter Mortensen'ın çözümü işe yaradı:

$(this).find("option:selected").text();

Her zamanki yolun neden başarılı olamadığını bilmiyorum .each()(muhtemelen kendi hatam), ama teşekkür ederim, Peter. Bunun asıl soru olmadığını biliyorum, ama "Google'dan gelen yeni başlayanlar için" diyorum.

Ben $('#list option:selected").each()de seçim elemanından bir şeyler kapmak gerekiyordu dışında ile başlardı.


8

kullanın:

function selected_state(){
    jQuery("#list option").each(function(){
        if(jQuery(this).val() == "2"){
            jQuery(this).attr("selected","selected");
            return false;
        }
    });
}

jQuery(document).ready(function(){
    selected_state();
});

5

ID yerine dahili alan adına göre val almak için bakıyordum ve google'dan bu yazıda hangi yardımı buldum ama ihtiyacım olan çözümü bulamadım, ama çözümü aldım ve işte burada:

Bu nedenle, SharePoint listeleri için uzun kimlik kullanmak yerine alan dahili adıyla seçilen değeri arayan birine yardımcı olabilir:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 

Kesin çözüm. Üzgünüm, burada çok gizli bir yerde. Bu çözümü sağlamak için daha önemli bir yer bulmak isteyebilirsiniz. Belki kendi sorunuzu sorabilir ve cevaplayabilirsiniz?
Andrew Kozak

4

Dinamik olarak dökülen bir nesne ile uğraşırken bu cevaba ihtiyacım vardı ve buradaki diğer yöntemler işe yaramadı:

element.options[element.selectedIndex].text

Bu elbette , HTML'sini nodeValue, childNodes vb. İle ayrıştırmak yerine DOM nesnesini kullanır .




2

Sağda seçili olanı gösterecek birden çok seçim için dinamik bir sürüm istedim ( $(this).finddaha önce okuyup görseydim ... daha önce):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>

2

Aşağıdaki yollardan birini alabilirsiniz

$("#list").find('option').filter('[value=2]').text()

$("#list").find('option[value=2]').text()

$("#list").children('option[value=2]').text()

$("#list option[value='2']").text()

$(function(){    
    
    console.log($("#list").find('option').filter('[value=2]').text());
    console.log($("#list").find('option[value=2]').text());
    console.log($("#list").children('option[value=2]').text());
    console.log($("#list option[value='2']").text());
    
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.