获取多个select元素的最后一个选定值

我有许多选择框已设置为接受多个值。 反正我是否可以使用jQuery获取最后选择的值? 我尝试过使用以下内容:

var latest_value = $("option:selected",this).val(); 

它没有任何回报。 我只想要最后选择的值而不是值数组。

先感谢您

正如我所要求的那样,HTML我已经将列表缩小了,因为它太长了:

  2 Pack 3 Pack 4 Pack  

然后在页面的顶部我有以下内容(我有8个,但我已经展示了一些,以便您可以看到我正在使用多选小部件的多个实例:

 $(document).ready(function(){ $("#product-list").multiselect({ selectedList: 4, noneSelectedText: "Product", minWidth: 190 }).multiselectfilter(); $("#style-list").multiselect({ selectedList: 4, noneSelectedText: "Style", minWidth: 190 }).multiselectfilter(); $("#feature-list").multiselect({ selectedList: 4, noneSelectedText: "Features", minWidth: 190 }).multiselectfilter(); }); 

然后我在一个单独的js文件中有这个:

 $(function(){ $(".attrs").on("multiselectclick", function(event, ui){ var latest_value = $('option', this).filter(':selected:last').val(); alert (latest_value); var view = $("#currentview").val(); var page = 1; run_ajax(view,page); }); }) 

谢谢

使用:last选择器:

 var latest_value = $("option:selected:last",this).val(); 

可能在回调函数的上下文中,这并不是指元素本身,而是指向其中的元素,因此请尝试以下操作:

 var latest_value = $(this).closest('select').find('option').filter(':selected:last').val(); 

它也可能值得调用console.log(this); 在回调函数中,只是让你知道你实际使用的元素。

使用最后一个function:像这样

 $("#style-list option:selected").last().val() 

以下是使用Jquery从多个选择列表中获取最新选定选项的代码:

 var selected; $(document).ready(function() { $('#SELECT_ID').on('click', function() { var latestSelected; if (selected) { var currentOptionsValue = $(this).val(); latestSelected = currentOptionsValue.filter(function(element) { return selected.indexOf(element) < 0; }); } selected = $(this).val(); console.log( "latest selected option : " + latestSelected); }); }); 

是的,因为@KannanK说,上面的答案没有给出正确的值,因为它是根据下拉显示顺序存储值,所以如果从下到上选择,那么将给出错误的值。

我有一个更好的逻辑来实现这一目标。 每次下拉变化都将存储到一个全局变量中,以便我们可以在differOpt变量中获得最后选择的值。

 var lastSelectedValues = []; $('#yourID').change(function(e) { debugger; var currentSelVals = $('#yourID').val(); var differOpt =arr_diff(currentSelVals,lastSelectedValues); lastSelectedValues = currentSelVals; }); function arr_diff (a1, a2) { var a = [], diff = []; for (var i = 0; i < a1.length; i++) { a[a1[i]] = true; } for (var i = 0; i < a2.length; i++) { if (a[a2[i]]) { delete a[a2[i]]; } else { a[a2[i]] = true; } } for (var k in a) { diff.push(k); } return diff; } 

更新一个更好的解决方案,我们可以使用onChange选项,它可以选择/取消选择正确的值

 $(function () { $('#datadownAutpState').multiselect( onChange: function(option, checked) { alert(option.val + ' option ' + (checked ? 'selected' : 'deselected')); } });});