无法使用jquery在IE中取消选择多选中的选项

时间:2013-10-25 10:25:02

标签: javascript jquery multi-select

我有以下选择框:

<select multiple="" style="width:266px;" class="text_boxes" name="photography_type[]" id="photography_type">
                                                                                                    <option selected="" value="0" label="General photographer
">General photographer
</option>
                                                                                                                <option value="1" label="Editorial photographer/news photographer 
">Editorial photographer/news photographer 
</option>
                                                                                                                <option value="2" label="Photojournalist">Photojournalist 
</option>

</select>

以下在IE中不起作用

function removeSelection(id){
        $('#photography_type :selected').each(function(i, selected){ 
       $(selected).options[id].selected = false;
        });
 }

任何解决方案?

3 个答案:

答案 0 :(得分:1)

尝试使用.prop取消设置选择

这将取消设置所有选定的选项(fiddle):

$('#photography_type :selected').each(function(i, opt) {
    $(opt).prop('selected', false)
})

这将只删除一个选定元素(fiddle):

function removeSelection(id){
    $('#photography_type option').eq(id).prop('selected', false)
}

答案 1 :(得分:1)

selectedDOM对象的属性,您尝试使用jQuery对象调用它。

<强> Live Demo

function removeSelection(id) {
    $('#photography_type :selected').each(function (i, selected) {     
        selected.selected = false;
    });
}

或者简单地说,不使用each在单个语句中执行此操作。

<强> Live Demo

function removeSelection(id) {
    $('#photography_type :selected').prop('selected', false);
}

您可以将selectedIndex设置为-1

<强> Live Demo

function removeSelection(id) {
    $('#photography_type')[0].selectedIndex = -1;
}

答案 2 :(得分:1)

不要在相对昂贵的过程中取消选择每个选项,而是执行此操作:

document.getElementById('photography_type').selectedIndex = -1;

Vanilla JS功能强大且效率极高,您应该使用它。 ;)