jQuery适用于Chrome和Firefox,但不适用于IE

jQuery works in Chrome and firefox, but not IE

本文关键字:适用于 不适用 IE Firefox Chrome jQuery      更新时间:2023-09-26

首先,为糟糕的标题道歉,但老实说,我对jQuery的了解还不够多,无法具体说明什么不起作用,其他类似标题的问题没有提供有效的解决方案。

有以下代码,允许用户在不按住 ctrl 的情况下选择多个选项,正如标题所暗示的那样,除了在 IE 中(我目前正在使用 IE 11)之外,它工作正常。

function MultiSelect()
{
    $('.select-toggle').each(function(){    
        var select = $(this), values = {};    
        $('option',select).each(function(i, option){
            values[option.value] = option.selected;        
        }).click(function(event){        
            values[this.value] = !values[this.value];
            $('option',select).each(function(i, option){            
                option.selected = values[option.value];        
            });    
        });
    });
}

它正在从 html 选项框中调用

<script type="text/javascript">
$(document).ready(function() {
    MultiSelect();
});
<script>
</head>
<body>
...
<tr>
    <td colspan="2">
        <label for="defendants">Defendant(s):</label>
        <select class="select-toggle" name="people" id="people" multiple="multiple" >
            <option value="John Smith">John Smith</option>
            <option value="Julie Smith">Julie Smith</option>     
        </select>
    </td>
</tr>

谢谢

IE浏览器不支持option点击事件,需要在select元素上添加事件,见下面的代码

$(document).ready(function() {
    MultiSelect();
});
function MultiSelect()
{
    $('.select-toggle').each(function(){    
        var select = $(this), values = {};    
        $('option',select).each(function(i, option){
            values[option.value] = option.selected;        
        });
        $(this).click(function(event){        
            values[this.value] = !values[this.value];
            $('option',select).each(function(i, option){            
                option.selected = values[option.value];        
            });    
        });
    });
}

演示