2010-10-20 2 views
2

У меня есть список выбора, как так:набор предметов в списке выбора, чтобы выбрать

<select id="drpColours"> 
<option value="" selected="selected">Choose color</option> 
<option value="1">black</option> 
<option value="2">BLUE</option> 
</select> 

Я могу установить выбранный элемент на основе текстового элемента, а не значение. Поэтому, если я передаю функцию «Blue» функции, я хочу, чтобы функция установила третий элемент в списке, который будет выбран.

Я использую jquery для этого.

+0

Это не связанные с JQuery вопрос, вы должны генерировать HTML так, как вы хотите, и присвоить любые значения, которые вы хотите ... – Otar

+0

Вы могли бы, возможно, петли через значения в раскрывающемся списке, преобразуя их во все строчные буквы и проверяя, что имеет такое же значение. Параметры должны иметь значимые значения, например, черный, синий и т. Д. Кроме того, не должно быть никаких опций, все строчные и другие все кепки. Не выглядит красиво. –

ответ

4

Попробуйте это:

function setColor(color) { 
    $('#drpColours option').each(function() { 
     this.selected = (this.text.toLowerCase() === color.toLowerCase()); 
    }); 
} 
setColor('BLUE'); 

Это делает матч регистронезависимое. Если вам нужна чувствительность к регистру, удалите оба вызова .toLowerCase().

Или вот альтернативный вариант одного и того же:

function setColor(color) { 
    $('#drpColours option').attr('selected', function() { 
     return (this.text.toLowerCase() === color.toLowerCase()); 
    }); 
} 

setColor('BLUE'); 
+0

Просто для удовольствия: этот тест jsPerf (http://jsperf.com/set-selected-option-based-on-contents) показывает, что первая версия работает быстрее. –

+0

@ Dan - Спасибо за тест. : o) Это меня не слишком удивляет. Некоторое время назад я смотрел на то, что делает jQuery, когда вы передаете функцию некоторым из этих методов, которые могут принять их, и, насколько я помню, была небольшая дополнительная работа. – user113716

Смежные вопросы