Javascript $(';选项';)。mousedown事件在少数情况下不起作用

Javascript $(';选项';)。mousedown事件在少数情况下不起作用,javascript,jquery,Javascript,Jquery,我正在使用$('option').mousedown函数来允许对我的多选列表进行多选 当在加载页面时创建多个选择列表时,该选项起作用 但它不适用于使用javascript函数构建的多选列表 下面是我的mousedown事件代码 $('option').mousedown(function(e) {// alert('dsds'); e.preventDefault(); $(this).prop('selected', $(this)

我正在使用$('option').mousedown函数来允许对我的多选列表进行多选

当在加载页面时创建多个选择列表时,该选项起作用

但它不适用于使用javascript函数构建的多选列表

下面是我的mousedown事件代码

       $('option').mousedown(function(e) {// alert('dsds');
           e.preventDefault();  
           $(this).prop('selected', $(this).prop('selected') ? false : true);

          return false;
      });
下面是我使用javascript构建的列表

      $.each(vellalarSubCastList, function(j, option) {

        var $option = $("<option>", {text: option.name, value: option.id});
        $option.appendTo($indiaSubCastes);
     });
$。每个(vellalarSubCastList,函数(j,选项){
var$option=$(“”,{text:option.name,value:option.id});
$option.appendTo($indiausubcasts);
});

很可能是在生成选项列表之前附加了“mousedown”事件。在生成列表后尝试调用它

或者,您是否考虑过仅使用“multiple”属性


或者只是使用类似于

的插件,我同意Ting Sung的说法,即在创建
选项之前先附加处理程序。只能将处理程序附加到DOM中已存在的元素

如果列表在页面加载时生成一次,则只需更改代码中的顺序即可解决此问题。否则,应使用委托处理程序,如下所示:

  $('select').on('mousedown' ,'option' ,function(e) {// alert('dsds');
       e.preventDefault();  
       $(this).prop('selected', $(this).prop('selected') ? false : true);

      return false;
  });
该处理程序附加到
select
元素,但由任何子
选项
元素上的
mousedown
触发。第二个参数过滤哪些子元素将在第一个参数中接收事件。无论何时将它们添加到DOM中,这都是有效的

如果
select
也是动态生成的,并且在此之后无法附加处理程序,则可以将其附加到
div
或附加到列表的任何其他元素


通常也建议使用这种方法,因为每个
select
列表只需附加一个处理程序。使用
$('option')
将意味着将一个单独的处理程序附加到文档中的每个
选项。虽然较小的列表也可以,但随着列表变长,效率会降低。

谢谢。你的($('select')。on('mousedown','option')对我来说很有用。但唯一的问题是我选择的选项没有突出显示。请注意……。代码中有一点输入错误(不管怎样,函数前面不需要一个左括号,后面没有匹配的圆括号)这个例子对你有用吗?有些浏览器不支持选项元素上的mouseevents。