#javascript #jquery
#javascript #jquery
Вопрос:
Прямо сейчас я получаю select
параметр value
(буквальный value
атрибут) из jQuery, проблема в том, что он принимает первое найденное значение, которое просто «содержит» это ключевое слово.
Например, если бы у меня было a select
с двумя опциями: Silver Division ( value=1
) и Silver ( value=2
) , если бы я вызвал следующую строку кода, она вернула бы ( value=1
), а не ( value=2
)
var ranking = "Silver"; // hard-coded for example
var setIndex = $("#userElo" " > option:contains(" ranking ")").val();
В: Я безуспешно пытался найти что-то вроде, option:equals
чтобы он искал только точные совпадения строк. Я пробовал различные тесты и предположения, подобные следующим.
var setIndex = $("#userElo" ID " > option:contains" ranking).val();
var setIndex = $("#userElo" ID " > option[text=" ranking "]").val();
var setIndex = $("#userElo" ID " > option[text=" ranking).val();
Вот демонстрация JSFiddle в простом масштабе, показывающая деление серебра и выпуск серебра.
Однако у меня заканчиваются идеи, поэтому, если кто-нибудь знает какой-нибудь синтаксис для этого решения, это было бы здорово!
Спасибо!
Ответ №1:
Вам нужно будет выбрать все параметры, которые потенциально могут совпадать, а затем использовать filter()
функцию, чтобы сузить их до тех, которые действительно соответствуют тексту, который вы хотите. Это должно сделать это:
var ranking = "Silver";
var setIndex = $("#userElo > option").filter(function() {
return $(this).text() === ranking;
}).val();
Комментарии:
1. Спасибо за ответ! Я понимаю, что вы имеете в виду, но, похоже, я не могу заставить это работать в моей демонстрации JSFiddle . Я неправильно его реализую?
2. @Austin Как сказал abhitalks, это потому, что в вашем коде нет переменной ID. Я не смотрел на скрипку, я просто предположил, что попытки кода в вашем вопросе использовали правильный селектор. Я отредактирую свой ответ. РЕДАКТИРОВАТЬ: вот обновленная скрипка .
3. АХ, спасибо! Я заметил, что также забыл использовать
trim()
on$(this).text()
, так как моя БД добавляет дополнительные пробелы к значениям.