複数選択で選択されていないものをカウントしようとしています。しかし、何か問題があるようです。詳細については、フィドルを参照してください..
問題:
Select all
とDeselect all
ボタンを数回クリックしてみると、Select all
動作が停止します。- 視覚的には機能しなくなりますが、dom でまだ選択/選択解除されてい
Select all
ます。firebug を使用して確認できます。 - domで選択/選択解除している場合、選択解除された要素のカウントが正しくないのはなぜですか?
ノート:
私の問題を確認するには、以下のフィドルでこの正確な順序に従ってください。をクリックしてSelect all
からDeselect all
、もう一度Select all
. この時点で、DOM/Firebug はオプションが選択されていることを示しています。しかし、カウントを押すと、0 ではなく 4 という結果が得られます。
目的:視覚的に選択されているかどうかは気にしません。私の主な目的は、選択されていないオプションの正しいカウントを取得することです。
JSFIDDLE: http://jsfiddle.net/bababalcksheep/fgfdb/
HTML:
<button id="countdeselected">Count deselected</button>
<button id="selectall">select All</button>
<button id="deselectall">Deselect All</button>
<select name="languages[]" multiple="multiple" class="multiselect" id="languages" style=" ">
<option value="ALB">Albania</option>
<option value="DZA">Algeria</option>
<option value="alfa">Custom1</option>
<option value="beta">Custom2</option>
</select>
<ul id="status"></ul>
JS:
$("#countdeselected").click(function (event) {
var dd = $("#languages option:not(:selected)").length
$('#status').append($('<li>').text(dd));
});
$("#selectall").click(function (event) {
$("#languages option").attr('selected', 'selected');
});
$("#deselectall").click(function (event) {
$("#languages option").attr('selected', null);
});