JQuery'de $ (this) seçili seçeneği nasıl elde edebilirim?


93

Aşağıdaki kod çalışır:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

İkinci satırı şu şekilde yeniden düzenleme:

var cur_value = $(this).***option-selected***.text();

Ne için kullanıyorsun ***option-selected***?

Yanıtlar:


122

Seçilen değer için: $(this).val()

Seçilen seçenek öğesine ihtiyacınız varsa, $("option:selected", this)


107
 $(this).find('option:selected').text();

Bu benim için mükemmel çalıştı - $("option:selected", this)yukarıda belirtildiği gibi denedim ama bu sorunluydu. Seçilen seçenek öğesi metnini başka bir div öğesine eklemek için bir düğme tıklaması kullanıyordum, ancak düğmeye tıkladığımda, aslında seçili öğeyi değiştirdi ... garip. Bunu kullan.
skwidbreth

53

Açılır menüdeki onchange etkinlikleri için seçilen seçeneği elde etmenin en iyi ve en kısa yolu bence:

$('option:selected',this);

değer özelliğini almak için:

$('option:selected',this).attr('value');

etiketler arasında gösterilen bölümü almak için:

$('option:selected',this).text();

Örneğinizde:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

Kullanmayın .context, jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10
rafx

Evet, ama şunu demek istiyorsun: api.jquery.com/context $ ("ul", document.body) .context.nodeName, kullanmıyorum
angelmedia

1
Cevabı beğendim ama neden en iyisi?
Sébastien Gicquel



9

findGeçerli jQuery nesnesi tarafından işaret edilen düğümlerin soyundan gelen seçili seçeneği aramak için kullanabilirsiniz :

var cur_value = $(this).find('option:selected').text();

Bu muhtemelen acil bir çocuk olduğundan, .childrenbunun yerine şunu kullanmanızı öneririm :

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

Yana optionilk bağımlısı olması muhtemeldir selectayrıca kullanabilirsiniz:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


Alıntı option-selectedyapmadan nereye ulaşırsınız ...?
Platinum Azure

Bu bir yazım hatasıydı. Cevap düzeltildi.
thomthom

find('option:selected')benim için boş bir dize döndürür. JQuery'nin hangi sürümü gereklidir? 1.6.1'de çalışıyorum. children('option:selected')çalışır.
B Yedi


0

En iyi tahmin:

var cur_value = $('#select-id').children('option:selected').text();

Bu durumda çocukları daha çok seviyorum çünkü DOM ağacında yalnızca bir dal aşağı gideceğinizi biliyorsunuz ...


Belki de gerçekten kastettiğin, var cur_value = $ (this) .children ('seçenek: seçildi'). Text ();
Joe Johnston

0

Bu sadece

$(this).val();

JQuery'nin neye ihtiyacınız olduğunu bilecek kadar akıllı olduğunu düşünüyorum

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.