Как проверить, выбрана ли опция?
$('#mySelectBox option').each(function() {
if ($(this).isChecked())
alert('this option is selected');
else
alert('this is not');
});
По-видимому, isChecked
не работает. Итак, мой вопрос - как правильно это сделать?
Спасибо.
Ответы
Ответ 1
UPDATE
Более прямым методом jQuery для выбранной опции будет:
var selected_option = $('#mySelectBox option:selected');
Ответ на вопрос .is(':selected')
- это то, что вы ищете:
$('#mySelectBox option').each(function() {
if($(this).is(':selected')) ...
Способ не jQuery (возможно, лучший способ):
$('#mySelectBox option').each(function() {
if(this.selected) ...
Хотя, если вы просто ищете выбранное значение, попробуйте:
$('#mySelectBox').val()
Если вы ищете текст выбранного значения, выполните следующие действия:
$('#mySelectBox option').filter(':selected').text();
Отъезд: http://api.jquery.com/selected-selector/
В следующий раз найдите дублирующие вопросы SO:
Получить текущий выбранный вариант
или
Установить выбранную опцию
или
Как получить $(этот) выбранный параметр в jQuery?
или
опция [selected = true] не работает
Ответ 2
Вы можете получить выбранную опцию следующим образом:
$('#mySelectBox option:selected')...
LIVE DEMO
Но если вы хотите перебрать все параметры, сделайте это с this.selected
вместо this.isChecked
, который не существует:
$('#mySelectBox option').each(function() {
if (this.selected)
alert('this option is selected');
else
alert('this is not');
});
LIVE DEMO
Update:
У вас есть много ответов, предлагающих вам использовать это:
$(this).is(':selected')
Хорошо, это можно сделать намного быстрее и проще с помощью this.selected
, так почему вы должны использовать его, а не собственный метод элементов DOM?!
Прочтите Знать свои свойства и функции DOM в теге jQuery
Ответ 3
Если вы не знакомы или не уверены в is()
, вы можете просто проверить значение prop("selected")
.
Как показано здесь:
$('#mySelectBox option').each(function() {
if ($(this).prop("selected") == true) {
// do something
} else {
// do something
}
});
Edit
Как отметил @gdoron в комментариях, более быстрый и наиболее подходящий способ доступа к выбранному свойству опции - через селектор DOM. Вот скрипка update, отображающая это действие.
if (this.selected == true) {
похоже, работает так же хорошо! Спасибо gdoron.
Ответ 4
использование
$("#mySelectBox option:selected");
чтобы проверить, есть ли его конкретная опция myoption
:
if($("#mySelectBox option:selected").text() == myoption){
//...
}
Ответ 5
В моем случае я не знаю, почему выбрано всегда верно. Таким образом, единственный способ, который я смог придумать, - это:
var optionSelected = false;
$( '#select_element option' ).each( function( i, el ) {
var optionHTMLStr = el.outerHTML;
if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) {
optionSelected = true;
return false;
}
});
Ответ 6
Если вы хотите только проверить, выбрана ли опция, вам не нужно перебирать все параметры. Просто сделайте
if($('#mySelectBox').val()){
// do something
} else {
// do something else
}
Примечание. Если у вас есть опция со значением = 0, которую вы хотите выбрать, вам необходимо изменить if-условие на $('#mySelectBox').val() != null
Ответ 7
Рассматривайте это как ваш избранный список:
<select onchange="var optionVal = $(this).find(':selected').val(); doSomething(optionVal)">
<option value="mostSeen">Most Seen</option>
<option value="newst">Newest</option>
<option value="mostSell">Most Sell</option>
<option value="mostCheap">Most Cheap</option>
<option value="mostExpensive">Most Expensive</option>
</select>
то вы проверяете выбранный вариант следующим образом:
function doSomething(param) {
if ($(param.selected)) {
alert(param + ' is selected!');
}
}