选项的click事件在IE中不起作用

我有一个多选标记,我需要编写函数onclick它的选项,因为我需要获取最后点击选项的值,但是当我写下面的时候

$("#multiple_select option").click(function() { var val = $(this).val(); alert(val); }); 

它在IE中不起作用。

问题是什么?

UPDATE

我需要完全点击事件,因为我已经编写了一个函数onclick事件( 这里是 demo),我需要修复最后更改的元素的值,如果没有click事件,这是不可能的(我认为)

不要在选项上绑定它

 $("#multiple_select").click(function(){ alert("works"); }); 

接受的答案:

 $(document).ready(function() { var options = $("#supply_cities_select :selected"); var lastOption; $("#supply_cities_select").click(function() { lastOption = $(this).find(':selected').not(options); options = $(this).find(':selected'); }) }); 

如果您确实希望每个选项都有一个click event ,则需要使用List而不是dropdown样式。

要实现这一点,请将size属性添加到select元素中,例如:

 ​​​​​​​​​​​​​​​​​​​​​​​​​ 

现在,您可以单独绑定每个option

如果要获取单击选项的值,请使用change事件处理程序和.val()方法,如:

 $("#multiple_select").change(function() { var val = $(this).val(); alert(val); }); 
 $("#multiple_select").click(function(){ alert($(this).children("option:selected").val()); }); 

应该做的事情

    

警报窗口(取决于您所做的选择)显示所选值。

在选项上使用JQuery focus(),而不是单击()。

快乐的编码。

好的,这里有一些IE古怪:

使用IE,在click事件函数中, event.srcElement.value给出最后一次单击选项的值。

试试这个: http : //jsfiddle.net/Ch2DT/ (仅在IE8中测试,需要工作使其跨浏览器)

我喜欢@Reigel(已接受)的答案,但需要改进它以用于我的一个项目。 在下面的代码中,我介绍了一个新function“findClickedOption”,它解释了用户可能会重新单击已经选择的选项的事实。 这仍然不能解释CTRL点击多个选项,但对我来说已经足够了。

  var multiselect_s=$('#ms2side__sx'); var options_s =multiselect_s.find('option:selected'); multiselect_s.live('click',function(){ var clickedOption =findClickedOption($(this), options_s); options_s = $(this).find('option:selected'); doSomething(clickedOption);//call your own function here }); function findClickedOption(selectbox, optionsArr){ var selectedOptions=selectbox.find('option:selected'); if(selectedOptions.size>1){ return selectedOptions.not(optionsArr); }else{ return selectedOptions; } }