Javascript 需要检测jQuery是在普通组合框还是多选组合框中触发的

Javascript 需要检测jQuery是在普通组合框还是多选组合框中触发的,javascript,jquery,multi-select,Javascript,Jquery,Multi Select,我有一些jQuery代码,它允许我在一个multiselect组合框中选择多个条目,而无需按下Ctrl键 这可以工作,但会干扰正常的选择框,现在不能用鼠标更改该框 原始jQuery代码是: (function ($) { $(document).ready(function () { $("option").mousedown(function(e) { this.selected = ! this.selected; e.preventDefault();

我有一些jQuery代码,它允许我在一个multiselect组合框中选择多个条目,而无需按下Ctrl键

这可以工作,但会干扰正常的选择框,现在不能用鼠标更改该框

原始jQuery代码是:

(function ($) {
$(document).ready(function () {
    $("option").mousedown(function(e) {
      this.selected = ! this.selected;
      e.preventDefault();
      return false;
    });
});
})(jQuery);
当然,$(“option”)选择器也适用于普通的选择框,这就是它失败的原因

我试图检测该事件是否由具有“multiple”属性的选择框触发,但无法确定如何触发。以下原因不起作用,其中一个原因是事件是由选项触发的,而不是由选择按钮触发的:

(function ($) {
$(document).ready(function () {
    $("option").mousedown(function(e) {
        if($(this).attr('multiple','multiple')) {
          this.selected = ! this.selected;
          e.preventDefault();
          return false;
        }
        else {
          return true;
        }
    });
});
})(jQuery);
你知道怎么做吗

啊,我不想包括multiselect的ID,因为在我的现实世界中,另一个multiselect也使用相同的代码

这是一把小提琴:

为要应用此行为的所有multiselect元素提供一个新的CSS类——可能是
自定义multiselect

然后,您可以在您拥有的代码中使用复合选择器,如
。自定义多选选项

(function ($) {
  $(document).ready(function () {
    $(".custom-multiselect option").mousedown(function(e) {
      this.selected = ! this.selected;
      e.preventDefault();
      return false;
    });
  });
})(jQuery);

为要应用此行为的所有multiselect元素提供一个新的CSS类——可能是
自定义multiselect

然后,您可以在您拥有的代码中使用复合选择器,如
。自定义多选选项

(function ($) {
  $(document).ready(function () {
    $(".custom-multiselect option").mousedown(function(e) {
      this.selected = ! this.selected;
      e.preventDefault();
      return false;
    });
  });
})(jQuery);

您可以使用此选择器以每个多选的选项为目标:
$('select[multiple]option')


此选择器针对存在
多个
属性的
中出现的每个

您可以使用此选择器针对每个多选的选项:
$('select[multiple]option')


此选择器针对存在
多个属性的
中出现的每个

如何像这样针对每个多重选择中的选项:
$('select[multiple]option')
是的,太好了,这很有效!谢谢为什么不发布一个答案呢?在每一个多选选项中定位选项怎么样:
$('select[multiple]option')
是的,太好了,这很有效!谢谢为什么不发布一个答案呢?我最终使用了这个选项,因为它在我的情况下更容易,并且自动应用于所有的多选组合框。我最终使用了这个选项,因为它在我的情况下更容易,并且自动应用于所有的多选组合框。