Javascript 正常点击时取消选择-即不';行不通

Javascript 正常点击时取消选择-即不';行不通,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我有一大堆元素需要能够在点击时取消选择(没有CTRL+click,因为用户很笨,如果没有强化培训就无法理解,哈哈) 我有以下代码,在Chrome/Firefox中运行出色,而不是在IE 11中(还没有早期版本可供测试): 正如您所看到的,它非常简单,所有ID以“sel_”开头的东西都应该在其选项上显示“mousedown”事件。如果选择了该选项,请取消选择。如果未选择该选项,请选择 我尝试过“mouseup”和同一函数的不同迭代。我出于某种原因完全忽略了这一点。我在Stack上的其他地方(复选框

我有一大堆元素需要能够在点击时取消选择(没有CTRL+click,因为用户很笨,如果没有强化培训就无法理解,哈哈)

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

正如您所看到的,它非常简单,所有ID以“sel_”开头的东西都应该在其选项上显示“mousedown”事件。如果选择了该选项,请取消选择。如果未选择该选项,请选择

我尝试过“mouseup”和同一函数的不同迭代。我出于某种原因完全忽略了这一点。我在Stack上的其他地方(复选框)读到它在IE中不起作用,但jQuery的文档说明它在IE支持的所有版本中都起作用

任何帮助都将不胜感激

jsfiddle:

1)使用
$('[id^=“sel戡”]

2) 使用
.attr(“选定”,true)(代替道具)

3) Ommit事件绑定中的
'option'
参数


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

很抱歉,这个问题取决于每个浏览器本机的
select
元素的具体实现。IE以一种不同的方式处理它,这让你的变通方法破产了

我认为一个解决方案可以是实现您自己的自定义
选择
控件或使用现成的插件(如)


使用稳定的插件将帮助您处理移动设备/平板电脑,而定制控件需要特别注意。

您能否提供一个关于JSFIDLE的简单演示?Ommit事件绑定中的'option'参数,您已经根据它们的id将其绑定到给定的一组元素。如果我Ommit'option'参数,鼠标将启动,但它根本不选择或取消选择选项。我已经试过了,选择器不是问题所在。如果我去掉“option”位,它就会对整个select起作用。当我在上面的代码中指定“运行选项”时,IE会忽略它。2) 无论是使用道具还是属性,他们都不会得到firedOk,所以这是一个事件问题,谢谢你的澄清。虽然prop和attr之间存在差异,但这超出了这个问题的范围。我将按照欧文的要求等待JSFIDLE。我甚至在问这个问题之前就试过了。编辑JSFIDLE并自己尝试如何?你会看到如果不起作用我现在明白你的意思了,似乎没有简单的方法来禁用IE11中选择选项的本机单击事件对不起,我根本不接受这个答案。如果它这么坏,为什么jQuery说它可以工作?如果它这么坏,为什么像Selected这样的插件能正常工作?我是一名程序员。我不想通过添加插件和我永远不需要的功能来扩充我的软件,我可以为meIs编写几行代码,这不是jQuery的问题,而是IE浏览器的UI选择和事件处理。我知道你是一个程序员,但其他一些开发人员试图处理它。唯一完整的工作和跨浏览器解决方案是使用插件或自定义控件模拟标准的选择元素(在运行时选择“不重”中的旁注)。似乎在IE11中单击选项元素总是在开始时取消选择它,只是在几分之一秒后选择它。没有道理,但似乎欧文在这方面是对的。
$('[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;
});