【jquery】jquery 在 ie6 下無法設置 select 選中的解決方法


本文主要解決在 ie6 下,jquery 無法設置 select 選中的問題。我們先看個例子:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <title>demo</title>
</head>
<body>
    <select name="gameZone" id="gameZone">
        <option value="0">請選擇游戲大區</option>
        <option value="1">游戲一區</option>
        <option value="2">游戲二區</option>
    </select>
</body>
</html>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $.each($('#gameZone > option'),function(){
        if($(this).val() == '1'){
            $(this).attr('selected','selected');
        }
    });
});
</script>

以上代碼在所有瀏覽器中都沒有問題,打開頁面 select 會選中第二個選項。那么當 select 里的內容是動態添加的,又會是怎樣的情況呢?

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <title>demo</title>
</head>
<body>
    <select name="gameZone" id="gameZone">
        <option value="0">請選擇游戲大區</option>
    </select>
</body>
</html>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
var servers ='[{"gm_id":33,"groups":[{"index":"1","name":"\u4f20\u4e16\u51b7\u6708","id":"game1"}],"id":"dx1","name":"\u7535\u4fe1\u4e00\u533a"},{"gm_id":39,"groups":[{"index":"3","name":"\u4ed9\u5251\u604b\u5f71","id":"game3"}],"id":"dx4","name":"\u7535\u4fe1\u4e8c\/\u4e09\/\u56db\/\u4e94\/\u516d\u533a"},{"gm_id":49,"groups":[{"index":"1","name":"\u7b11\u50b2\u5343\u53e4","id":"game1"}],"id":"dx7","name":"\u7535\u4fe1\u4e03\u533a\/\u516b\u533a\/\u4e5d\u533a"},{"gm_id":62,"groups":[{"index":"1","name":"\u98ce\u5f71\u76db\u5bb4","id":"game1"}],"id":"dx10","name":"\u7535\u4fe1\u5341\u533a"},{"gm_id":68,"groups":[{"index":"1","name":"\u70c8\u65e5\u661f\u5b87","id":"game1"},{"index":"3","name":"\u5929\u67a2\u661f\u8fb0","id":"game3"},{"index":"5","name":"\u7eb5\u5730","id":"game5"},{"index":"6","name":"\u91d1\u83b2","id":"game6"}],"id":"dx11","name":"\u7535\u4fe1\u5341\u4e00\u533a"}]';
function showZone(){
    var serversLists = eval(servers);
    var serversHtml = '<option value="0">請選擇游戲大區</option>';
    for(var i = 0; i < serversLists.length; i++){
        serversHtml += '<option value="' + serversLists[i].id + '">' + serversLists[i].name + '</option>';
    }
    return serversHtml;
};
$(function(){
    $('#gameZone').html(showZone());
    $.each($('#gameZone > option'),function(){
        if($(this).val() == 'dx1'){
            $(this).attr('selected','selected');
        }
    });
});
</script>

我們可以看到在 chrome,firefox,ie8,ie7 這些瀏覽器都沒有問題,但是在蛋疼的 ie6 瀏覽器中會 js 報錯(無法設置 selected 屬性,未指明的錯誤)。

解決方法有兩種:setTimeout 和 try/catch

第一種:setTimeout(推薦)

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <title>demo</title>
</head>
<body>
    <select name="gameZone" id="gameZone">
        <option value="0">請選擇游戲大區</option>
    </select>
</body>
</html>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
var servers ='[{"gm_id":33,"groups":[{"index":"1","name":"\u4f20\u4e16\u51b7\u6708","id":"game1"}],"id":"dx1","name":"\u7535\u4fe1\u4e00\u533a"},{"gm_id":39,"groups":[{"index":"3","name":"\u4ed9\u5251\u604b\u5f71","id":"game3"}],"id":"dx4","name":"\u7535\u4fe1\u4e8c\/\u4e09\/\u56db\/\u4e94\/\u516d\u533a"},{"gm_id":49,"groups":[{"index":"1","name":"\u7b11\u50b2\u5343\u53e4","id":"game1"}],"id":"dx7","name":"\u7535\u4fe1\u4e03\u533a\/\u516b\u533a\/\u4e5d\u533a"},{"gm_id":62,"groups":[{"index":"1","name":"\u98ce\u5f71\u76db\u5bb4","id":"game1"}],"id":"dx10","name":"\u7535\u4fe1\u5341\u533a"},{"gm_id":68,"groups":[{"index":"1","name":"\u70c8\u65e5\u661f\u5b87","id":"game1"},{"index":"3","name":"\u5929\u67a2\u661f\u8fb0","id":"game3"},{"index":"5","name":"\u7eb5\u5730","id":"game5"},{"index":"6","name":"\u91d1\u83b2","id":"game6"}],"id":"dx11","name":"\u7535\u4fe1\u5341\u4e00\u533a"}]';
function showZone(){
    var serversLists = eval(servers);
    var serversHtml = '<option value="0">請選擇游戲大區</option>';
    for(var i = 0; i < serversLists.length; i++){
        serversHtml += '<option value="' + serversLists[i].id + '">' + serversLists[i].name + '</option>';
    }
    return serversHtml;
};
$(function(){
    $('#gameZone').html(showZone());
    setTimeout(function(){
        $.each($('#gameZone > option'),function(){
            if($(this).val() == 'dx1'){
                $(this).attr('selected','selected');
            }
        });
    },1);
});
</script>

第二種:try/catch

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8"/>
    <title>demo</title>
</head>
<body>
    <select name="gameZone" id="gameZone">
        <option value="0">請選擇游戲大區</option>
    </select>
</body>
</html>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
var servers ='[{"gm_id":33,"groups":[{"index":"1","name":"\u4f20\u4e16\u51b7\u6708","id":"game1"}],"id":"dx1","name":"\u7535\u4fe1\u4e00\u533a"},{"gm_id":39,"groups":[{"index":"3","name":"\u4ed9\u5251\u604b\u5f71","id":"game3"}],"id":"dx4","name":"\u7535\u4fe1\u4e8c\/\u4e09\/\u56db\/\u4e94\/\u516d\u533a"},{"gm_id":49,"groups":[{"index":"1","name":"\u7b11\u50b2\u5343\u53e4","id":"game1"}],"id":"dx7","name":"\u7535\u4fe1\u4e03\u533a\/\u516b\u533a\/\u4e5d\u533a"},{"gm_id":62,"groups":[{"index":"1","name":"\u98ce\u5f71\u76db\u5bb4","id":"game1"}],"id":"dx10","name":"\u7535\u4fe1\u5341\u533a"},{"gm_id":68,"groups":[{"index":"1","name":"\u70c8\u65e5\u661f\u5b87","id":"game1"},{"index":"3","name":"\u5929\u67a2\u661f\u8fb0","id":"game3"},{"index":"5","name":"\u7eb5\u5730","id":"game5"},{"index":"6","name":"\u91d1\u83b2","id":"game6"}],"id":"dx11","name":"\u7535\u4fe1\u5341\u4e00\u533a"}]';
function showZone(){
    var serversLists = eval(servers);
    var serversHtml = '<option value="0">請選擇游戲大區</option>';
    for(var i = 0; i < serversLists.length; i++){
        serversHtml += '<option value="' + serversLists[i].id + '">' + serversLists[i].name + '</option>';
    }
    return serversHtml;
};
$(function(){
    $('#gameZone').html(showZone());
    try{
        $.each($('#gameZone > option'),function(){
            if($(this).val() == 'dx1'){
                $(this).attr('selected','selected');
            }
        });
    }catch(e){}
});
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM