【问题标题】:Detect when a specific <option> is selected with jQuery检测何时使用 jQuery 选择了特定的 <option>
【发布时间】:2010-12-29 12:17:09
【问题描述】:

我希望 jQuery 检测何时选择了 ID 为 trade_buy_max 的选项。

$(document).ready(function() {
    $("option#trade_buy_max").select(function () {
        //do something
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<select name='type' id='type'>
    <option id='trade_buy' value='1' selected='selected'>Buy</option>
    <option id='trade_buy_max' value='1'>Buy max</option>
    <option id='trade_sell' value='2'>Sell</option>
    <option id='trade_sell_max' value='2'>Sell max</option>
</select>

我尝试了以下方法,但似乎不起作用。

有什么想法吗?

【问题讨论】:

    标签: javascript jquery events select option


    【解决方案1】:

    这行得通... 监听选择框上的更改事件以触发,一旦触发,只需拉取所选选项的 id 属性。

    $("#type").change(function(){
      var id = $(this).find("option:selected").attr("id");
    
      switch (id){
        case "trade_buy_max":
          // do something here
          break;
      }
    });
    

    【讨论】:

    • 由于我的选项值是唯一的,我可以使用这个: var val = $('#select_xyz').val();还有我在看到这篇文章之前犯的错误——我应该使用 click(..) 而应该使用 .change(..) 。谢谢!
    【解决方案2】:

    您需要做的是将onchange 处理程序添加到select

    $('#type').change(function(){ 
      if($(this).val() == 2){
         /* Do Something */
      }
    });
    

    【讨论】:

      【解决方案3】:

      您可以在其选择上绑定change 事件,然后检查是否选择了选项

      $("select#type").change(function () {
         if( $("option#trade_buy_max:selected").length )
         {
           // do something here
         }
      });
      

      【讨论】:

        【解决方案4】:
        $("option#trade_buy_max").change(function () {
            opt = $(this).children("option:selected").attr('id');
            if(opt == '#trade_sell_max'){
                // do stuff
            } 
        });
        

        未经测试,但应该可以。

        【讨论】:

          【解决方案5】:

          使用change事件,获取选中选项的id属性:

          $('#type').change(function () {
            var selectedId = $('option:selected', this).attr('id');
          
            if (selectedId == "trade_buy_max") {
              // do something
            }
          });
          

          【讨论】:

            【解决方案6】:

            将 .select 更改为 .change 并在 # 之前放置空格

            【讨论】:

              猜你喜欢
              • 2019-07-31
              • 2023-03-23
              • 2017-09-12
              • 2015-01-30
              • 1970-01-01
              • 2013-10-31
              • 2021-04-27
              • 2018-05-05
              • 1970-01-01
              相关资源
              最近更新 更多