Jquery 确定html select是否在其任何子选项中包含值

Jquery 确定html select是否在其任何子选项中包含值,jquery,Jquery,给出一个选择 <select id="Myselect"> <option value="-1">Please Select<option> <option value="1">Selection 1<option> <option value="2">Selection 2<option> </select> 确定使用JQuery选择中是否有值X选项的最佳方法是什么?您可以使用选择器执行此操作,如

给出一个选择

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

确定使用JQuery选择中是否有值X选项的最佳方法是什么?

您可以使用选择器执行此操作,如下所示:

var exists = $("#mySelect option[value='-1']").length !== 0;
function optionExists(val) {
  return $("#mySelect option").filter(function() {
           return this.value === val;
         }).length !== 0;
}
var exists = $("#Myselect:has(option[value='X'])").length > 0;
或者作为一种功能:

function optionExists(val) {
  return $("#mySelect option[value='" + val + "']").length !== 0;
}
如果不是数字,您可能在其中有“例如拧选档杆,您可以使用,如下所示:

var exists = $("#mySelect option[value='-1']").length !== 0;
function optionExists(val) {
  return $("#mySelect option").filter(function() {
           return this.value === val;
         }).length !== 0;
}
var exists = $("#Myselect:has(option[value='X'])").length > 0;
选择器应该可以工作,如下所示:

var exists = $("#mySelect option[value='-1']").length !== 0;
function optionExists(val) {
  return $("#mySelect option").filter(function() {
           return this.value === val;
         }).length !== 0;
}
var exists = $("#Myselect:has(option[value='X'])").length > 0;
这远不是唯一的方法,而是一种易于理解的方法。
您也可以执行类似.g的函数,因为.length>0有时并不清楚它是否存在。

为什么不使用var exists=$mySelect option[value='-1']!=未定义,正在获取要访问的对象directly@jAndy-因为它不是未定义的:它是一个包含0个DOM元素的jQuery对象,因此.length==0:下面是一个示例:@jAndy-您试图访问数组中没有元素的第一个元素,因此是的,它将被未定义:普通的$anywhere将永远不会被未定义,它将没有元素来执行链的其余部分。@尼克:我不确定var exists=$mySelect option[value='-1'][0]是否会带来任何好处。如果找到了某个对象,那么domeElement将很好地存在,但之后仍然必须将其包装到jQuery对象中。所以可能是一种愚蠢的方法:.length>0意味着选择器找到了某个东西,这意味着它存在。那么您能解释一下您的上一条语句吗?我不跟在后面。你还需要一个结尾]在那里…但我不会走这条路,这只是Sizzle内部的额外工作。