Jquery 单击“事件”以获取选项';我不在IE工作

Jquery 单击“事件”以获取选项';我不在IE工作,jquery,onclick,Jquery,Onclick,我有一个multiple-select标记,我需要在单击它的选项时编写函数,因为我需要获取上次单击的选项的值,但是当我编写以下内容时 $("#multiple_select option").click(function() { var val = $(this).val(); alert(val); }); 它在IE中不起作用 有什么问题 更新 我需要准确地单击事件,因为我已经编写了一个函数onclick event(demo),并且我需要修复上次更改的元素的值,如果没有

我有一个multiple-select标记,我需要在单击它的选项时编写函数,因为我需要获取上次单击的选项的值,但是当我编写以下内容时

$("#multiple_select option").click(function()
{
     var val = $(this).val();
     alert(val);
});
它在IE中不起作用

有什么问题

更新
我需要准确地单击事件,因为我已经编写了一个函数onclick event(demo),并且我需要修复上次更改的元素的值,如果没有单击事件,这是不可能的(我认为)

不要将其绑定到选项上

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

如果您确实希望在每个选项上都有一个
单击事件
,则需要有
列表
,而不是
下拉列表
样式

为此,将
size
属性添加到
select
元素中,例如:

<select type="multiple" size=4>
  <option>foo</option>
  <option>bar</option>
  <option>baseball</option>
</select>​​​​​​​​​​​​​​​​​​​​​​​​​
应该对事物进行修改


<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>
一个 两个 三 四 $(文档).ready(函数(){ $(“#多个_选择”)。单击(函数(){ 警报($(this.val()); }); });
警报窗口根据您所做的选择显示所选值。

使用JQuery focus()on选项,而不是单击()


快乐的编码。

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

使用IE,在单击事件函数中,
event.srcement.value
给出上次单击选项的值

试试这个:(只在IE8中测试过,需要努力使其跨浏览器)

我喜欢@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;
      }
    }

我需要绑定选项,因为我需要获得单击选项的值,请查看更新。每次单击
select
元素时都会触发此操作,您需要使用
change事件处理程序
,这样就可以了。您只需检查单击的元素是否为选项(e.target.tagName==“选项”)。谷歌活动授权获取更多信息。@edeverett:要么我完全离开了,要么那就是错的。你介意举个例子来说明你的意思吗?@jAndy我错了。当然,如果option元素不支持click事件,那么仅仅移动事件绑定是没有帮助的!然而,在调查中,我找到了一个答案。正如我所想,OP想要得到最后一个点击的元素选项使用“大小”方法的nice一个:)+1我的错,我不明白你可以得到几个选项。这个怎么样?非常感谢男士:/非常有趣的解决方案(我不知道
。不知道
方法)
<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>
    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;
      }
    }