$(" #Id选项")给出重复值

时间:2017-04-11 09:31:42

标签: jquery

我的DDL(下拉列表)包含10个元素(包括-- Select --)。

drop down list

1. 情景 - 1

当我使用以下$选项 - $("#SelectId option");时,它返回一个数组,其实际存在的元素数量是其中的两倍(另一半是重复的)。

2. 情景 - 2

使用$("#SelectId").find("option");时,使用了确切数量的元素。

console

为什么会这样?

修改

正如@AlivetoDie所指出

我有这个隐藏的元素具有相同的ID。

$("#RoleId option")涵盖整个文档。 $("#RoleId").find("option")仅获得第一个选定元素的位置。

感谢@AlivetoDie指出它。

我很糟糕,我没有看到隐藏的元素。

根据@David Thomas的要求

<select data-cs-url="" data-optional-val="-- Select --" data-preselectedvalues="[-1]" data-unique="a0d4311ab42f47ef935543f8e3227a20" data-val="true" data-val-number="The field Role must be a number." data-val-required="Select Role!" id="RoleId" name="RoleId">
<option value="">-- Select --</option>
<option value="4">a - </option>
<option value="1">Admin - Administrator</option>
<option value="1004">Asp.Net Mvc Developer - Web Developer</option>
<option value="2">Data Entry - Operator</option>
<option value="3">Data Entry East - Operator For East Region</option>
<option value="1006">Data Entry2 - Operator</option>
<option value="1008">Test - Testing purpose</option>
<option value="1007">Tester - To test the application</option>
<option value="1005">Training - for training only</option>
</select>

1 个答案:

答案 0 :(得分:1)

对我而言,它的工作正常(两种情况): -

console.log($("#RoleId option").get().length); 
console.log($("#RoleId").find("option").get().length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select data-cs-url="" data-optional-val="-- Select --" data-preselectedvalues="[-1]" data-unique="a0d4311ab42f47ef935543f8e3227a20" data-val="true" data-val-number="The field Role must be a number." data-val-required="Select Role!" id="RoleId" name="RoleId">
  <option value="">-- Select --</option>
  <option value="4">a - </option>
  <option value="1">Admin - Administrator</option>
  <option value="1004">Asp.Net Mvc Developer - Web Developer</option>
  <option value="2">Data Entry - Operator</option>
  <option value="3">Data Entry East - Operator For East Region</option>
  <option value="1006">Data Entry2 - Operator</option>
  <option value="1008">Test - Testing purpose</option>
  <option value="1007">Tester - To test the application</option>
  <option value="1005">Training - for training only</option>
</select>

注意: -

结束时可能的错误原因: -

相同的选择框出现两次

选择框ID正在重复

一些jquery代码在后台静默添加更多选项。

您也可以直接使用length: -

console.log($("#RoleId option").length); 
console.log($("#RoleId").find("option").length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select data-cs-url="" data-optional-val="-- Select --" data-preselectedvalues="[-1]" data-unique="a0d4311ab42f47ef935543f8e3227a20" data-val="true" data-val-number="The field Role must be a number." data-val-required="Select Role!" id="RoleId" name="RoleId">
  <option value="">-- Select --</option>
  <option value="4">a - </option>
  <option value="1">Admin - Administrator</option>
  <option value="1004">Asp.Net Mvc Developer - Web Developer</option>
  <option value="2">Data Entry - Operator</option>
  <option value="3">Data Entry East - Operator For East Region</option>
  <option value="1006">Data Entry2 - Operator</option>
  <option value="1008">Test - Testing purpose</option>
  <option value="1007">Tester - To test the application</option>
  <option value="1005">Training - for training only</option>
</select>