Poniższy kod działa:
$("#select-id").change(function(){
var cur_value = $('#select-id option:selected').text();
. . .
});
Jak refaktoryzować drugą linię, aby:
var cur_value = $(this).***option-selected***.text();
Do czego używasz ***option-selected***
?
javascript
jquery
B Seven
źródło
źródło
$("option:selected", this)
jak wspomniano powyżej, ale to było problematyczne. Używałem kliknięcia przycisku, aby dołączyć wybrany tekst elementu opcji do innego elementu div, ale kiedy kliknąłem przycisk, faktycznie zmieniło to wybrany element ... dziwne. Użyj tego.Moim zdaniem najlepszy i najkrótszy sposób na zdarzenia zmiany na liście rozwijanej, aby uzyskać wybraną opcję:
$('option:selected',this);
aby uzyskać atrybut value:
$('option:selected',this).attr('value');
aby uzyskać pokazaną część między tagami:
$('option:selected',this).text();
W twojej próbce:
$("#select-id").change(function(){ var cur_value = $('option:selected',this).text(); });
źródło
.context
, jest przestarzały od wersji jQuery 1.10 - api.jquery.com/category/deprecated/deprecated-1.10var cur_value = $('option:selected',this).text();
źródło
To powinno działać:
$(this).find('option:selected').text();
źródło
Możesz użyć
find
do wyszukania wybranej opcji, która jest potomkiem węzłów wskazanych przez bieżący obiekt jQuery:var cur_value = $(this).find('option:selected').text();
Ponieważ jest to prawdopodobnie najbliższe dziecko, sugerowałbym użycie
.children
zamiast tego:var cur_value = $(this).children('option:selected').text();
źródło
var cur_value = $(this).find('option:selected').text();
Ponieważ
option
prawdopodobnieselect
jesteś bezpośrednim dzieckiem , możesz również użyć:var cur_value = $(this).children('option:selected').text();
http://api.jquery.com/find/
źródło
option-selected
bez cytatów ...?find('option:selected')
zwraca dla mnie pusty ciąg. Jaka wersja jQuery jest wymagana? Pracuję w 1.6.1.children('option:selected')
działa.option:selected
jest tam od wersji 1.0 api.jquery.com/selected-selectorNajlepsze przypuszczenie:
var cur_value = $('#select-id').children('option:selected').text();
W tym przypadku bardziej lubię dzieci, ponieważ wiesz, że idziesz tylko o jedną gałąź w dół drzewa DOM ...
źródło
To poprostu
$(this).val();
Myślę, że jQuery jest wystarczająco sprytny, aby wiedzieć, czego potrzebujesz
źródło