【问题标题】:how to find the latest selected item of a multiple select tag using jquery?如何使用 jquery 查找多选标签的最新选定项?
【发布时间】:2014-08-20 06:04:27
【问题描述】:

我的网站上有一个<select multiple="multiple" id="multi">,并且我在 jquery 中有一个具有此功能的脚本:

$("#multi").on("change",function(){}) 

我想在这个函数中访问select的最新选择项(用户最后选择的一项),我该怎么做?

【问题讨论】:

  • 最后一个,如用户选择的最后一个,或者HTML等中最后一个选择的选项。
  • 我的意思是用户选择的最后一个
  • 那你应该在cmet发布的时候回答一下,在接受之前测试一下答案

标签: javascript jquery html-select


【解决方案1】:

要获取用户最后选择的,您可以这样做

var map = $("#multi").on("change",function(){
    var comp = $("#multi option:selected").map(function() {
            return this.value;
        }).get(),
        set1 = map.filter(function(i) {
            return comp.indexOf(i) < 0;
        }),
        set2 = comp.filter(function(i) {
            return map.indexOf(i) < 0;
        }),
        last = (set1.length ? set1 : set2)[0];

    map = comp;

    // "last" contains the last one selected /unselected

}).find('option:selected').map(function() {return this.value}).get();

FIDDLE

【讨论】:

    【解决方案2】:

    您可以这样使用:selected 选择器和:last(或.last()):

    $('#multi').change(function() {
      console.log( $(this).find('option:selected:last').text() );
    });
    

    JSFiddle

    【讨论】:

    • 不,这显示了html中最后选择的项目,我想要用户最近选择的项目!
    • @Navid777 使用value() 而不是text()
    【解决方案3】:

    我想你正在寻找这个

    $("#multi").on("change",function(){
        alert($("option:selected:last",this).val());    
    }) 
    

    DEMO

    【讨论】:

    • 不,这显示了html中最后选择的项目,我想要用户最近选择的项目!
    • @Navid777 对不起,你告诉我没有得到的差异。
    【解决方案4】:
    var last_value;   
    
     $('#multi').change(function() {
         last_value = this.val();
    alert(last_value);
        });
    

    定义全局变量,每次你的下拉菜单改变seletion,你可以用新的替换最后选择的值。

    【讨论】:

      【解决方案5】:

      FIDDLE :

      使用Optimize解决方案减少编码:为什么不使用jquery的is函数:

      $(document).ready(function(){
          $('#multi option').click(function(){        
              if($(this).is(':selected'))
                  console.log('you have select' + $(this).val());
              else
                  console.log('you have Unselect' + $(this).val());
          });
      });
      

      【讨论】:

        【解决方案6】:

        这个怎么样

        var = last;
        $('#multi').find('option').each(function() {
            $(this).click(function() {
                if($(this).hasAttr('selected')) {
                    last = $(this);
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-07-04
          • 1970-01-01
          • 2011-01-25
          • 2011-01-11
          • 1970-01-01
          • 2011-11-19
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          相关资源
          最近更新 更多