Нет необходимости вызывать: selected при получении значения в поле выбора.
Поведение по умолчанию - получить selectedIndex
$( "#institutionCombo").val();
Как отмечено в комментарии, если вам нужен доступ к тексту этой опции, вы можете использовать
$( "#institutionCombo option[value=" + $( "#institutionCombo").val(); + "]").text();
хотя, если вы знаете, что вам нужно свойство text, и оно отличается от значения, вы можете просто использовать selectedIndex напрямую.
var combo = $("#institutionCombo").get(0);
combo = combo ? combo : {selectedIndex: -1}; // handle no combo returned
if (combo.selectedIndex < 0)
return; // nothing selected
$('#institutionCombo option:eq(' + combo.selectedIndex + ')').text()
Вот фрагмент из источника jquery (v1.3)
val: function( value ) {
// ...
// We need to handle select boxes special
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
values = [],
options = elem.options,
one = elem.type == "select-one";
// Nothing was selected
if ( index < 0 )
return null;
// Loop through all the selected options
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
var option = options[ i ];
if ( option.selected ) {
// Get the specifc value for the option
value = jQuery(option).val();
// We don't need an array for one selects
if ( one )
return value;
// Multi-Selects return an array
values.push( value );
}
}
return values;
// ...
},
Когда вы вызываете: selected селектор, который проходит цикл по всем потомкам select-элементов, ища свойство .selected, которое нужно установить, и возвращает массив any. В любом случае, если вы это сделаете, все потомки будут зациклены, так что не делайте этого.