2016-11-09 5 views
0

У меня есть выпадающий список выглядит следующим образом:выпадающих получить значение параметра с помощью опции текста с помощью содержит метод JQuery возвращает неправильное значение

<select id="lang" > 
     <option value="1">php</option> 
     <option value="2">java j2ee</option> 
     <option value="3">asp</option> 
     <option value="4">java</option> 
    </select> 

Что я делаю пытаюсь получить значение параметра с помощью опции текста следующим образом;

Пусть Java является вариант текста, так что я попытался это следующим образом:

var a = $('#lang option:contains("java")').val(); 

Но я получаю значение параметра, как 2 вместо 4 (что является правильным и ожидаемым)

Я неправильно, потому что я пытаюсь метод contains. Пожалуйста, помогите мне, как я могу получить точную стоимость?

FIDDLE

+0

JQuery ': содержит()' так же, как '.indexOf()' сделать это вы будет получать 2,4, если вы используете '.each()' –

ответ

2

Пример использования .filter().

alert($('#lang option').filter(function(){return $(this).text() == 'java' }).val());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="lang"> 
 
    <option value="1">php</option> 
 
    <option value="2">java j2ee</option> 
 
    <option value="3">asp</option> 
 
    <option value="4">java</option> 
 
</select>

+0

Спасибо, что он хороший – Santhucool

+0

Приветствую вас за помощь :) –

2

Вы можете использовать .html() для проверки содержания:

$('#lang option').each(function() { 
 
    if ($(this).html() == 'java') { 
 
    alert($(this).val()); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="lang"> 
 
    <option value="1">php</option> 
 
    <option value="2">java j2ee</option> 
 
    <option value="3">asp</option> 
 
    <option value="4">java</option> 
 
</select>

+0

Или вы можете использовать 'text()' для проверки. – Qsprec

1

Если вы хотите, чтобы выбрать элемент с точным текстом использовать Regex

var regex = new RegExp("^java$"); 
var a = $('#lang option').filter(function() { 
    return regex.test($(this).text()); 
}).val(); 
alert(a);