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

时间:2010-07-27 08:13:34

标签: jquery onclick

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

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

它在IE中不起作用。

有什么问题?

更新

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

7 个答案:

答案 0 :(得分:7)

不要在选项

上绑定它
$("#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');
        })
});

答案 1 :(得分:3)

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

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

<select type="multiple" size=4>
  <option>foo</option>
  <option>bar</option>
  <option>baseball</option>
</select>​​​​​​​​​​​​​​​​​​​​​​​​​

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

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

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

答案 2 :(得分:0)

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

应该对事物

答案 3 :(得分:0)

<select id="multiple_select" size="4">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
</select>

<script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">

    $(document).ready(function() {
        $('#multiple_select').click(function() {
            alert($(this).val());
        });
    });

</script>

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

答案 4 :(得分:0)

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

快乐编码。

答案 5 :(得分:0)

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

使用IE,在点击事件功能中,event.srcElement.value给出最后点击选项的值。

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

答案 6 :(得分:0)

我喜欢@ Reigel(已接受)的答案,但需要对其进行改进才能在我的某个项目中使用。在下面的代码中,我介绍了一个新功能“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;
      }
    }