Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过选择框的更改事件查找选项是否已“选中”或“取消选中”_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 通过选择框的更改事件查找选项是否已“选中”或“取消选中”

Javascript 通过选择框的更改事件查找选项是否已“选中”或“取消选中”,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个html多选择框。当我选择/取消选择更改中的值时,会对其触发事件 从事件中知道事件是由于某个元素被选中或取消选中的最佳方式是什么?我不想要它的值,只想知道更改事件是因为“选择”还是“取消选择”。在这里做一些假设,你有一个多重选择,你只需要知道是否有选择 然后,您只需要使用缓存值检查所选选项的长度 看这把小提琴: 不是最优雅或优化的方式,而是方向 var sel = 0; $('#mySelect').on("change", function() { var newsel = $

我有一个html多选择框。当我选择/取消选择更改中的值时,会对其触发事件


从事件中知道事件是由于某个元素被选中或取消选中的最佳方式是什么?我不想要它的值,只想知道更改事件是因为“选择”还是“取消选择”。

在这里做一些假设,你有一个多重选择,你只需要知道是否有选择

然后,您只需要使用缓存值检查所选选项的长度

看这把小提琴:

不是最优雅或优化的方式,而是方向

var sel = 0;
$('#mySelect').on("change", function() {
    var newsel = $(this).find(":selected").length;
    if (newsel > sel) {
        // selected
    } else {
        if (newsel < sel) {
            // de-selected
        } else {
            // no-change
        }
    }
    sel = newsel;
});
如果确实需要比较选定或取消选定的值,则不缓存长度,而是将选定值缓存在数组中。更改时,将当前选定的值与缓存的数组进行比较

希望给出一个合适的指针

更新:

使用值进行更精确的比较,如上所述,通过数组进行比较

这是一把小提琴的样品:


希望对您有所帮助。

您能解释一下为什么需要它吗?我需要根据是否已选择元素或是否已取消选择元素来执行操作。如您所知,在选项选择时显示绿色辉光,在选项取消选择时显示红色辉光。并不是说我在做这件事,而是举个例子。我可以数一数。但我只是想知道是否有更好的方法。这有帮助吗?
var sel = [];
$('#s1').on("change", function() {
    var newsel = $(this).val();
    var same = compareArray(newsel, sel);
    if (same) {
        // no-change
    } else {
        if ((!same) && ((newsel.length == sel.length) || (newsel.length < sel.length))) {
            // de-selected
        } else {
            // selected
        }
    }
    sel = newsel;
});

function compareArray(a, b) {
    $.each( a, function( key, value ) {
        var index = $.inArray( value, b );
        if( index != -1 ) {
            return true;
        }
    });
    return false;
}