使用 jQuery 清除启用多选的 <select> 上的所有选择的快速方法?

Posted

技术标签:

【中文标题】使用 jQuery 清除启用多选的 <select> 上的所有选择的快速方法?【英文标题】:Quick way to clear all selections on a multiselect enabled <select> with jQuery? 【发布时间】:2011-01-16 07:39:21 【问题描述】:

我是否必须遍历所有的并设置删除“选定”属性或者有更好的方法吗?

【问题讨论】:

【参考方案1】:

只需在您的&lt;select&gt; 中找到所有选定的&lt;option&gt; 标记并删除selected 属性:

$("#my_select option:selected").removeAttr("selected");

从 jQuery 1.6 开始,您应该使用 .prop 而不是删除属性:

$("#my_select option:selected").prop("selected", false);

【讨论】:

对于多选下拉,这不会清除显示的文本。【参考方案2】:

为了清除所有选择,我这样使用它,它对我来说工作正常。 这是脚本:

 $("#ddlMultiselect").multiselect("clearSelection");

 $("#ddlMultiselect").multiselect( 'refresh' );

【讨论】:

此答案与问题无关。 这是什么库?多选不是 jQuery 或 jQueryUI 的一部分。 这是用于引导多选的可能 为我工作:jQuery(".select-access").multiselect("clearSelection") "s" lowerCase. 他指的是这个插件loudev.com/#usage,顺便说一句,“clearSelection”现在不起作用。改用“deselect_all”【参考方案3】:

删除所有选择的最短和最快的方法是在 jQuery .val() 函数中传递空字符串:

$("#my_select").val('')

【讨论】:

只是一个警告,如果你有一个带有 value="" 的选项,这个方法会选择它,所以接受的答案是你的方式jsfiddle.net/yemgudc8【参考方案4】:

这是清除多选或列表框的最佳方式:

 $("#drp_assign_list option[value]").remove();

【讨论】:

【参考方案5】:

在 JQuery 中:

  $("#id option:selected").prop("selected", false);
  $("#id").multiselect('refresh');

【讨论】:

【参考方案6】:

$("#ddlMultiselect").val('').trigger("change");

对于多选下拉菜单,它会清除显示的文本。

【讨论】:

【参考方案7】:

jQuery 的:selected 选择器可能正是您要找的。​​p>

【讨论】:

【参考方案8】:

javascript 中,

您可以使用多选下拉列表的所有选项列表,该列表将是一个数组。然后循环遍历它以使每个对象中的选定属性为 false。

for(var i=0;i<list.length;i++)

   if(list[i].Selected==true)
    
       list[i].Selected=false;
    

【讨论】:

问题是专门要求一种方法来做到这一点,而无需遍历整个列表(如果列表很长,可能会占用大量资源)【参考方案9】:

您可以传递一个空数组来取消选择所有选择。这是一个例子。来自documentation

val() 允许您传递元素值数组。这很有用 在处理包含 、 和 s 等元素的 jQuery 对象时 .在这种情况下,输入和选项的值 匹配数组的元素之一将被选中选中 而那些具有不匹配的元素之一的值 数组将未选中未选中,具体取决于类型。

$('.clearAll').on('click', function() 
  $('.dropdown').val([]);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="dropdown" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

<button class='clearAll'>Clear All Selection</button>

【讨论】:

【参考方案10】:

$('.clearAll').on('click', function() 
  $('.dropdown').val([]);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select class="dropdown" multiple>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

<button class='clearAll'>Clear All Selection</button>

【讨论】:

请在你的回答中添加一些解释:)【参考方案11】:
$('.selectpicker').selectpicker('deselectAll');

https://developer.snapappointments.com/bootstrap-select/methods/

【讨论】:

如果您使用的是 bootstrap-select,这是一个有效的方法【参考方案12】:

我尝试了很多解决方案并想出了这个。

下拉菜单的选项和选择仅使用此清除

$("#my-multi option:selected").prop("selected", false);
$("#my-multi option").remove();

但是界面没有更新。所以你必须这样做

$('#my-multi').multiselect('rebuild');

因此,最终的代码是

$("#my-multi option:selected").prop("selected", false);
$("#my-multi option").remove();
$('#my-multi').multiselect('rebuild');

欢迎提出建议和改进。

【讨论】:

$('#my-multi').multiselect('rebuild');这对我有用,谢谢兄弟:)【参考方案13】:

假设您使用的是 David Stutz 的 Bootstrap 多选下拉菜单

$('#selectId').multiselect('deselectAll', false);

但由于某种原因,它在初始化方法中不起作用

【讨论】:

以上是关于使用 jQuery 清除启用多选的 <select> 上的所有选择的快速方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Select2 jquery 进行多选的 ASP MVC 下拉列表

jQuery 多选下拉框插件

jQuery中其他

jquery 怎样获取select多选下拉框所有选项的值

JQuery 当点击input后,单选多选的选中状态

允许使用 selected.js 多选的新值