jquery - 如何使用 jQuery 在多选中切换选项的选择?

标签 jquery html select

我有一个标准的 select multiple HTML 输入字段,例如:

<select multiple="multiple" size="5" id="mysel" name="countries"> 
    <option value="2">Afghanistan</option> 
    <option value="4">Aland</option> 
</select>

由于这是一项多选,要选择多个值,您必须按住 CTRL 键并选择更多元素。然而,我想要实现的是:

  1. 单击未选择的选项将其选中
  2. 单击已选择的选项取消选择它。

这个想法是为了避免必须按 CTRL 键并更改此输入字段的使用语义。元素只能通过单击来选择和取消选择(即切换选择状态)。

我还没有能够实现这个。伪代码应如下所示。

  1. 捕捉点击事件。
  2. 检查被点击的元素是否未被选择,然后选择它
  3. 或者,如果被点击的元素被选中,则取消选中它。

我应该如何实现?

最佳答案

您可以使用以下代码片段来实现您想要的效果

$("select[multiple] option").mousedown(function(){
   var $self = $(this);

   if ($self.prop("selected"))
          $self.prop("selected", false);
   else
       $self.prop("selected", true);

   return false;
});

在旧版本的 jQuery 中,prop() 不可用:

$("select[multiple] option").mousedown(function(){
   var $self = $(this);

   if ($self.attr("selected"))
          $self.attr("selected", "");
   else
       $self.attr("selected", "selected");

   return false;
});

关于jquery - 如何使用 jQuery 在多选中切换选项的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096259/

相关文章:

html - 更改使用 css + png 构建的按钮的状态

html - 在 html 中禁用/只读选择标签

sql - SQL 查询中的多个嵌套 SELECT

javascript - 附加显示 'undefined'

javascript - 清空并追加元素的扩展高度

javascript - WordPress : Change name in my button from 'LOGOUT' to the name of the user?

javascript - 为什么 Firefox 在溢出 :hidden element while dragging, 之外触发 mousemove 而不是溢出 :visible?

jQuery 'removeClass' 无法在粘性导航栏上工作

javascript - string.prefix() 运算符,它存在吗?

select - 当结果可能为空时,如何在 PL/SQL 中选择一个变量?