Определите, содержит ли html-значение значение в любом из его дочерних параметров

Учитывая выбор

<select id="Myselect">
<option value="-1">Please Select<option>
<option value="1">Selection 1<option>
<option value="2">Selection 2<option>
</select>

Какой лучший способ определить, есть ли опция значения X в выборе с помощью JQuery?

Ответы

Ответ 1

Вы можете сделать это с помощью селектора и .length, например:

var exists = $("#mySelect option[value='-1']").length !== 0;

Или как функция:

function optionExists(val) {
  return $("#mySelect option[value='" + val + "']").length !== 0;
}

Если он не числится и у вас может быть ' там, например (привинчивание селектора), вы можете использовать .filter(), например:

function optionExists(val) {
  return $("#mySelect option").filter(function() {
           return this.value === val;
         }).length !== 0;
}

Ответ 2

: has() селектор должен работать, примерно так:

var exists = $("#Myselect:has(option[value='X'])").length > 0;

Это далеко не единственный путь, но простой подход. Вы также можете сделать somethi.g, например для функции .Exists(), так как .length > 0 иногда неясно означает, что он существует.