1

我有以下选择框:

<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;
        });
 }

有什么解决办法吗?

4

3 回答 3

1

对象的selectedis 属性,DOM您正试图用jQuery对象调用它。

现场演示

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

或者简单地说,在单个语句中执行,而不使用each.

现场演示

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

您可以将 selectedIndex 事件设置为 -1

现场演示

function removeSelection(id) {
    $('#photography_type')[0].selectedIndex = -1;
}
于 2013-10-25T10:37:24.977 回答
1

尝试使用.prop取消选择

这将取消设置所有选定的选项(小提琴):

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

这将只删除一个选定的元素(小提琴):

function removeSelection(id){
    $('#photography_type option').eq(id).prop('selected', false)
}
于 2013-10-25T10:32:12.810 回答
1

与其在一个相对昂贵的过程中取消选择每个选项,不如这样做:

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

Vanilla JS功能强大但效率无与伦比,您应该使用它。;)

于 2013-10-25T10:39:32.113 回答