IE中的.remove()或选择器行为

时间:2011-05-29 04:49:15

标签: javascript jquery internet-explorer jquery-selectors

function updateSelector()
{
    //select all drop down list of field selector
    var fieldSelector = $("select:not(#project):not(#allNo):not(#availableNo)");
    var selected;
    //copy full option list from static drop down list to temp drop down list
    $("#availableNo").empty().append($("#allNo").clone());
    //remove any selected option from temp option
    fieldSelector.each(function() {
        $("#availableNo"+" option[value="+$(this).val()+"]").remove();
    });
    //copy temp option to all field selector
    fieldSelector.each(function() {
        //store selected option for current dropdown
        selected = $("option:selected", this);
        //clear list then append stored selected option
        $(this).empty().append(selected);
        //append temp option to current dropdown
        $(this).append($("#availableNo option").clone());
        //add blank option
        if($("option",this).length ==1)
            $(this).append("<option></option>");
    });
    //alert("..");
}

上面的代码工作正常,但在IE中,如果之后有声明,它似乎会表现得很奇怪(如果之后没有任何问题就没问题,而且只有IE有问题)。

如果我发出警报(在最后一行),则所选选项将移动1个索引。

例如,如果有1-4选择1将导致选择2;如果选择2则为3.

有谁知道原因或原因是什么?

我真的很沮丧......

1 个答案:

答案 0 :(得分:1)

此案例与this case

相同

通过添加“this.blur();”来解决在val()语句之前

fieldSelector.each(function() {
   this.blur();
   $("#availableNo"+" option[value="+$(this).val()+"]").remove();
});