我有一堆元素需要能够在点击时取消选择(没有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/
答案 0 :(得分:1)
我很抱歉,但问题取决于每个浏览器本机的select
元素的具体实现。 IE以不同的方式处理它,它会使你的解决方法破裂。
我认为解决方案可以是实现您自己的自定义select
控件,也可以使用就绪插件(如chosen
)。
使用稳定的插件可以帮助您处理移动设备/平板电脑,使用自定义控件需要特别关注。
答案 1 :(得分:-1)
1)使用$('[id^="sel_"]')
2)使用.attr("selected", true);
(而不是道具)
3)在事件绑定
中省略'option'
参数
注意:鼠标事件是否被触发? (使用console.log)