IE9没有正确运行.each()jQuery函数

时间:2013-07-26 20:41:37

标签: javascript jquery html

我有两个多选项,我可以来回传输项目,这在所有浏览器中都很完美。我的问题是在IE9中.each()似乎没有运行。基本上我正在做的是运行.each(),它将在我提交之前选择所需的多选项中的所有项目。在IE9中,当我单击提交时,select2中的任何项都不会被选中。

JSFIDDLE

JQUERY

/* multi-select handler */
$('#add').click(function()
{  
    return !$('#select1 option:selected').remove().appendTo('#select2').removeAttr("selected"); 
});  
$('#remove').click(function()
{  
    return !$('#select2 option:selected').remove().appendTo('#select1').removeAttr("selected");  
});

/* submit button handler */
$('#submit').click(function)
{
    /* select all items in select2 */
    $('#select2 option').each(function()
    { 
        $(this).attr("selected","selected");
    });

    /* check to see if any items were selected */
    if( $('#select2 option').length === 0 )
    {
        alert('no items selected');
    }
    else
    {
        alert('success'); 
    }
}); 

HTML

<div class="multi-select-container">       
    <div class="multi-select-left">
        <select multiple id="select1">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
            <option value="4">Four</option>
            <option value="5">Five</option>
            <option value="6">Six</option>
        </select>             
    </div>  
    <div class="multi-select-center">
        <button id="add" class="btn btn-mini btn-add" style="display:block;margin:5px;">Add</button>
        <button id="remove" class="btn btn-mini btn-delete" style="display:block;margin:5px;">Remove</button>
    </div>
    <div class="multi-select-right"> 
        <select multiple id="select2"></select>               
    </div> 
</div>

2 个答案:

答案 0 :(得分:3)

尝试替换它:

$(this).attr("selected", "selected");

由此:

$(this).prop("selected", true);

答案 1 :(得分:-1)

我认为问题是this在jquery中不会修复。我认为你必须避免使用attr函数。