powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQ - найти нужный <option> в <select>'е
9 сообщений из 9, страница 1 из 1
JQ - найти нужный <option> в <select>'е
    #39372330
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется выпадающий SELECT:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<SELECT id="SelToch" NAME="Tochnost" SIZE="1" title="Выбрать числовое значение">
	<OPTION value="#8C9497_0.05%" style="background: #8C9497; color: #ffffff;">0.05%</OPTION>
	<OPTION value="#A608D9_0.1%" style="background: #A608D9; color: #ffffff;">0.1%</OPTION>
	<OPTION value="#0000FF_0.25%" style="background: #0000FF; color: #ffffff;">0.25%</OPTION>
	<OPTION value="#00D400_0.5%" style="background: #00D400; color: #000000;">0.5%</OPTION>
	<OPTION value="#C04F00_1%" style="background: #C04F00; color: #ffffff;">1%</OPTION>
	<OPTION value="#FF0000_2%" style="background: #FF0000; color: #ffffff;">2%</OPTION>
	<OPTION value="#CC940C_5%" style="background: #CC940C; color: #000000;">5%</OPTION>
	<OPTION value="#CCC5C2_10%" style="background: #CCC5C2; color: #000000;">10%</OPTION>
</SELECT>


Также в JS-коде имеется переменная, например -
Код: javascript
1.
var bbb='0.25%'


Как лучше средствами JQ найти (и сделать выбранным, selected) в этом SELECT'е тот OPTION, текстовое содержимое которого идентично содержимому переменной bbb ?
Знаю, как это сделать в цикле на чистом JS, но хочу применить возможности JQ - нутром чую, что тогда можно будет сделать всё изящнее и без цикла :)
Подскажите, плиз, как лучше осуществить такой поиск/активацию.
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39372350
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так наверное: http://api.jquery.com/contains-selector/
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39372351
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
Спасибо! Любопытная ссылка - там, правда, поиск DIV'а, но в принципе - подход более-менее универсальный.
А я только что нашёл ещё и вот что - может, кому-нибудь пригодится.
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39372544
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakВот так наверное: http://api.jquery.com/contains-selector/
Такой вот еще есть...
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39372998
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, не всё так просто получается. Даже JQ оказался не всемогущим, увы.
Нигде в Интернете не нашёл фильтра по текстовому содержимому тега
Код: plaintext
option
, кроме
Код: plaintext
:contains()
Но такой фильтр не всегда подходит, ибо, например, текст "5%" содержится как в опции с текстом"5%", так и в опциях с текстом "0.5%", или "0.05%", и т.п.
Так и не нашёл подходящего фильтра :)
Например, подобный
Код: plaintext
[atrib^='stroka']
- не подходит, ибо option - не атрибут. А метод
Код: plaintext
option.text()
- никак не выходит записать в виде условия фильтрации.
Фильтр по атрибуту
Код: plaintext
value
мне не подходит - этот атрибут у меня имеет сложную структуру ибо задействован в функциях дальнейших преобразований. Нужно фильтровать именно по текстовому содержимому тега
Код: plaintext
option
Перепробовал все найденные в Интернете варианты:
Код: javascript
1.
2.
3.
4.
5.
$("#SelToch").find("option:contains("+b2+")").attr("selected","selected");
$("#SelToch").find('option.text()='+b2).attr("selected","selected");
$("#SelToch").find('option.text()^='+b2).attr("selected","selected");
$("#SelToch option").text(b2).attr("selected","selected");
$('#SelToch').filter(function () {return $(this).text() == b2; }).attr("selected","selected");


Нормально работает только первый вариант, и то - если нет "охватывающего" содержимого, описанного мной в начале поста.
Может, кто знает более строгое выражение фильтра, чем
Код: plaintext
:contains()
, пригодное для употребления к тегу
Код: plaintext
option
?
Нужно сравнивать текстовое наполнение этого тега с переменной b2, и совпавший option делать выбранным:
Код: plaintext
.attr("selected","selected")
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39373243
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самой работоспособной оказалась конструкция:
Код: javascript
1.
$("#SelToch option").filter(function() {return this.text == b2;}).prop("selected", true);


А наиболее универсальное решение через самописную JQ-функцию демонстрируется здесь , а описывается - здесь .
Мне помогло, может, и ещё кому-нибудь окажется полезным.
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39373253
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
neznajkaНе, не всё так просто получается. Даже JQ оказался не всемогущим, увы.
RTFM
Код: javascript
1.
$('#SelToch option[value$="' + bbb + '"]').attr('selected', true);
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39373257
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но если действовать совсем по джикверевски то надо делать так
Код: javascript
1.
2.
3.
4.
var el = $('#SelToch');
el.val(
  el.find('option[value$="' + bbb + '"]').attr('value')
);
...
Рейтинг: 0 / 0
JQ - найти нужный <option> в <select>'е
    #39374212
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lan,
Спасибо за ответ, но мне в данном случае - я выше написал об этом - крайне нежелательно задействовать фильтр по value.
А найденное мной решение с фильтром по тексту
Код: javascript
1.
...return this.text == bbb...


оказалось самым подходящим.
Прошу тему считать исчерпанной.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JQ - найти нужный <option> в <select>'е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]