如何使用 jQuery 查找多选标签的最新选定项

how to find the latest selected item of a multiple select tag using jquery?

本文关键字:最新 标签 jQuery 查找 何使用      更新时间:2023-09-26

我的网站里有一个<select multiple="multiple" id="multi">,我在jquery中有一个脚本,它有这个功能:

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

我想访问此功能中select的最新选定项(用户选择的最后一个(,我该怎么做?

要获取用户最后选择的,您可以执行此操作

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();

小提琴

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

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

JSFiddle

我想

你正在寻找这个

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

演示

var last_value;   
 $('#multi').change(function() {
     last_value = this.val();
alert(last_value);
    });

定义全局变量,每次下拉列表更改选择时,都可以将最后一个选定的值替换为新值。

小提琴:

使用优化解决方案减少编码: 为什么不使用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());
    });
});
这个

怎么样

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