如何消除Internet Explorer 9中选择多个列表中所有选项的慢滚动

时间:2015-01-09 17:42:21

标签: jquery html internet-explorer internet-explorer-9

我需要提供一个按钮,允许用户在选择多个列表框中选择所有选项。

我正在使用jQuery来选择选项。

在Internet Explorer 9中,单击该按钮后,浏览器将通过所有选项显示慢速滚动效果。

示例代码和慢速滚动位于http://jsfiddle.net/willdurman/4b7avgmm/12/

此效果在最新的Firefox或Chrome中不存在。

如何消除这种慢速滚动效果?

要求用户最初显示的列表框中没有选择任何选项,然后可以选择单个选项或所有选项。

// Abbreviated list of 10 options
<select id="lb" multiple="multiple">  
    <option value="0">item number 0</option>
    <option value="1">item number 1</option>
    <option value="2">item number 2</option>
    <option value="3">item number 3</option>
    <option value="4">item number 4</option>
    <option value="5">item number 5</option>
    <option value="6">item number 6</option>
    <option value="7">item number 7</option>
    <option value="8">item number 8</option>
    <option value="9">item number 9</option>
</select>
<input type='button' id='selectAll' value ='Select All'/>

    // jQuery to select all options
    $(document).ready(function() { 
            $('#selectAll').click(function(e) {
                    $("#lb option").prop("selected",true);
            });
    });

2 个答案:

答案 0 :(得分:0)

我发现虽然滚动效果在更新,更快的机器上不太明显,但它仍然存在。

经过多次搜索,我发现了这个Stack Overflow问题Dynamically select all items in a Multi-Select listbox using jquery。我调整了代码以使用我的示例代码:

var selectAllButton = document.getElementById('selectAll');
var listbox = document.getElementById('lb');

$(selectAllButton).click(function() { 
    selectAllOptions(listbox);
});

function selectAllOptions(listbox) {
var select = $(listbox);    
var clone = select.clone();
    $('option', clone).attr('selected', true);
    var html = clone.html();
    select.html(html);
}

这是更新的JSFiddle http://jsfiddle.net/willdurman/4b7avgmm/19/。此方法不会导致Internet Explorer 9中的滚动。

答案 1 :(得分:0)

我的最终实施要简单得多。我只是用jQuery hide / show包装选择过程。

 $(document).ready(function() { 
      $('#selectAll').click(function(e) {
           $('#lb').hide();
           $("#lb option").prop("selected",true);
           $('#lb').show();
      });
 });

JSFiddle:http://jsfiddle.net/4b7avgmm/17/