5

我有一个多选元素,一旦我选择了一个选项,就不可能取消选择所有选项。当我单击它并且它之前被选中时,我需要取消选择该选项。

我尝试了一些事情,但它们不起作用,因为每次我单击该选项时,它都会被选中,无论它是否被选中,因此无法知道它是否先前被选中并且应该被取消选中,或者它是否是我第一次单击它选择它

http://jsfiddle.net/JRgdv/

<select  multiple="multiple">
    <option>11111</option>
    <option selected>2</option>
    <option>33333</option>
    <option>44444</option>
</select>

我知道我可以有按钮或区域,我可以单击以清除整个内容,但我正在努力做到这一点,以便如果您单击选定的选项,那么它会取消选择它

编辑:CTRL+Click 不是我要找的。它只能用鼠标

4

2 回答 2

12

可能是一种解决方法:

看演示

$('select option').on('mousedown', function (e) {
    this.selected = !this.selected;
    e.preventDefault();
});

编辑:这不适用于 IE(版本???)。对于跨浏览器解决方案,即使是丑陋的,也可以尝试:https ://stackoverflow.com/a/21797607/1414562

于 2013-05-22T17:05:26.297 回答
1

这可能有点hack-ish,但它有效。演示:http: //jsfiddle.net/tymeJV/JRgdv/1/

var currentSelect = $("select option:selected").index();

$("select option").click(function() {
    if ($(this).index() == currentSelect) {
        $(this).prop("selected", false);
        currentSelect = -1;
    } else {
        currentSelect = $(this).index();
    }
});
于 2013-05-22T16:44:50.653 回答