在正常点击时取消选择 - IE无法正常工作

时间:2014-05-27 07:44:49

标签: javascript jquery internet-explorer

我有一堆元素需要能够在点击时取消选择(没有CTRL +点击,因为用户很愚蠢,没有经过强化训练就无法解决,大声笑)

我有以下代码,在Chrome / Firefox中运行得非常出色,而不是在IE 11中运行(还没有早期版本可供测试):

$('[id^=sel_]').on('mousedown', 'option', function(e){
    e.preventDefault();

    if ($(this).is(':selected')) {
        $(this).prop("selected", false);
    } else {
        $(this).prop("selected", true);
    }

    $(this).change();

    return false;
});

正如您所看到的那样,非常简单,ID为“sel_”的所有内容都应该在其选项上获得“mousedown”事件。如果选择该选项,请取消选择。如果未选择该选项,请选择。

我尝试过“mouseup”和相同功能的不同迭代。 IE由于某种原因完全忽略它。我在其他地方读过Stack(对于复选框)它在IE中不起作用,但是jQuery的文档声明它确实适用于它们支持的所有IE版本。

任何帮助都将受到高度赞赏。

jsfiddle:http://jsfiddle.net/576A5/

2 个答案:

答案 0 :(得分:1)

我很抱歉,但问题取决于每个浏览器本机的select元素的具体实现。 IE以不同的方式处理它,它会使你的解决方法破裂。

我认为解决方案可以是实现您自己的自定义select控件,也可以使用就绪插件(如chosen)。

使用稳定的插件可以帮助您处理移动设备/平板电脑,使用自定义控件需要特别关注。

答案 1 :(得分:-1)

1)使用$('[id^="sel_"]')

2)使用.attr("selected", true);(而不是道具)

3)在事件绑定

中省略'option'参数

注意:鼠标事件是否被触发? (使用console.log)