【发布时间】:2015-09-24 11:54:46
【问题描述】:
我有一个 select2 类型的列表。
<select id="list" class="form-control select2 select2-hidden-accessible" tabindex="-1" aria-hidden="true">
<optgroup label="Types">
<option value="None">None</option>
<option value="1">One</option>
<option value="2">Two</option>
</optgroup>
</select>
我想禁用具有 value=1 的选项 所以我确实喜欢这个
$("#list>optgroup>option[value='1']").prop('disabled',true);
Result:// <option value="1" disabled>One</option>
它工作正常;但是如果我想重新启用禁用的选项,我尝试了下面的代码,但 select2 选项仍然被禁用。
$("#list>optgroup>option[value='1']").prop('disabled',false);
$("#list>optgroup>option[value='1']").removeProp('disabled');
Result:// <option value="1">One</option>
但奇怪的是选项的禁用属性被删除。但 select2 选项仍处于禁用状态。
不知道如何解决这个问题。需要帮助。
更新:如果我检查 select2 的 DOM,即使在删除禁用后它仍然具有此属性。
<li class="select2-results__option" id="select2-template-type-list-result-4qd3-merge" role="treeitem" aria-disabled="true">One</li>
如果我使 aria-disabled="false" 它将启用。不知道是什么原因。
【问题讨论】:
-
您是否尝试在更改禁用属性后再次在元素上调用
.select2(…)? -
$("#list>optgroup>option[value='1']").prop('disabled',false); $("#list>optgroup>option[value='1']").removeProp('disabled'); $("#list").select2();
-
@CBroe 重新启用选项的问题。禁用功能正常工作。我尝试调用 select2()。它工作正常。但我无法得到 select2 中的问题是什么?
-
在更改选项的
disabled状态后再次调用.select2即可正常工作:jsfiddle.net/xoxd2u15 -
当然,对于“普通”选择字段不需要调用任何其他内容,因为这是浏览器直接呈现的默认 HTML 元素。但是 select2 用自定义 HTML 元素替换了该选择字段(并隐藏了原始元素)——显然它不会“监视”原始选择元素的选项在调用后不断更改其禁用状态,并且所以你必须在改变状态后再次调用它,以便它从原始元素的选项中读取 current 属性值......
标签: jquery select jquery-select2