<select><option>(多选),只检查最后的 $(this).val()

<select><option> (multiselect), get last $(this).val() checked ONLY

我有一个 select 选项,带有 onclick,我只想给出最后一个选项的参数(他的 class 名字)......但是 $(this).val() return : var1, var2, varN...

<select id="hiddenColumns" onchange="alert($(this).last().val())" multiple="multiple">
    <option className="imgClass"  >Images</option>
    <option className="idClass">Identifiant</option>
</select>

我在这里发现了同样的问题,但我没有找到可行的解决方案。

Get last selected value of multiple select element

为了获得最后选择的选项,您可以使用 jQuery 方法

$(this).find(':selected').last();

或选择器

$(this).find(':selected:last');

然后获取属性 "className" 使用 .attr('className')

总的来说可以是这样

$(this).find(':selected:last').attr('className')

为什么不将侦听器设置为选项而不是 select?

$('#hiddenColumns option').click(function(event) {
    if ($(this).is(':selected'))
    alert($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="hiddenColumns" multiple="multiple">
    <option className="imgClass"  >Images</option>
    <option className="idClass">Identifiant</option>
</select>

好的,然后我找到了解决方案: 我建议使用 bootstrap multiselect 作为 multiselect select 选项。 然后你可以在创建列表时使用它,然后你有一个方法来检查最后一个值: http://davidstutz.github.io/bootstrap-multiselect/

<script type="text/javascript">
    $(document).ready(function() {
        $('#example-onChange').multiselect({
            onChange: function(option, checked, select) {
                alert('Changed option ' + $(option).val() + '.');
            }
        });
    });
</script>