Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 jquery multiselect:未选定选项的计数不起作用_Javascript_Jquery_Html - Fatal编程技术网

Javascript jquery multiselect:未选定选项的计数不起作用

Javascript jquery multiselect:未选定选项的计数不起作用,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试在multi-select中计算未选择的数量。但似乎有一些问题。更多信息请参见小提琴 问题: 尝试单击“全选”和“取消全选”按钮几次,然后选择“所有停止工作”。 即使Select all在视觉上停止工作,它仍然在dom中选择/取消选择。您可以使用firebug来检查它。 如果它在dom中选择/取消选择,为什么它对取消选择的元素给出不正确的计数? 注: 请按照下面小提琴的顺序来查看我的问题。 单击全选,然后取消全选,然后再次全选。 此时,DOM/Firebug显示已选择选项。 但当我按c

我正在尝试在multi-select中计算未选择的数量。但似乎有一些问题。更多信息请参见小提琴

问题:

尝试单击“全选”和“取消全选”按钮几次,然后选择“所有停止工作”。 即使Select all在视觉上停止工作,它仍然在dom中选择/取消选择。您可以使用firebug来检查它。 如果它在dom中选择/取消选择,为什么它对取消选择的元素给出不正确的计数? 注:

请按照下面小提琴的顺序来查看我的问题。 单击全选,然后取消全选,然后再次全选。 此时,DOM/Firebug显示已选择选项。 但当我按count时,我得到的结果是4,即0

目标:我不在乎它是否在视觉上进行选择,我的主要目的是在firebug显示正在选择和取消选择选项时获得未选择选项的正确计数

JSFIDDLE:

HTML:

JS:


元素的属性和属性之间存在差异。属性是初始状态,属性是当前状态

您正在设置选项的属性,该属性仅在元素没有该属性开始时起作用。之后,属性将接管并设置属性对当前状态不再有任何影响

要更改选择状态时,需要设置属性而不是属性:

$("#selectall").click(function (event) {
    $("#languages option").prop('selected', true);
});
$("#deselectall").click(function (event) {
    $("#languages option").prop('selected', false);
});

演示:

元素的属性和属性之间存在差异。属性是初始状态,属性是当前状态

您正在设置选项的属性,该属性仅在元素没有该属性开始时起作用。之后,属性将接管并设置属性对当前状态不再有任何影响

要更改选择状态时,需要设置属性而不是属性:

$("#selectall").click(function (event) {
    $("#languages option").prop('selected', true);
});
$("#deselectall").click(function (event) {
    $("#languages option").prop('selected', false);
});

演示:

在Chrome上,效果很好。但在Firefox上,一旦按下全选然后取消全选,从现在起就不能按下全选按钮。很奇怪。但是如果你按下全选然后取消全选,然后手动选择所有项目,它就会工作。在Chrome上,它工作得很好。但在Firefox上,一旦按下全选然后取消全选,从现在起就不能按下全选按钮。很奇怪。但是如果你按下全选然后取消全选,然后手动选择所有项目,它就会工作。
$("#selectall").click(function (event) {
    $("#languages option").prop('selected', true);
});
$("#deselectall").click(function (event) {
    $("#languages option").prop('selected', false);
});