Javascript 通过jQuery根据位置动态重新排列国家/地区下拉列表?

Javascript 通过jQuery根据位置动态重新排列国家/地区下拉列表?,javascript,jquery,geolocation,Javascript,Jquery,Geolocation,我有一个国家和国家代码的下拉列表。这个列表相当大,所以我想在页面加载后动态地将访问者的国家放在首位。在jQuery(GeoIP)中有没有一种方法可以做到这一点 我的下拉列表如下所示: <select name="country" id="country" class="inputCombo"> <option value="">Select an item...</option> <option value="AF">Afghani

我有一个国家和国家代码的下拉列表。这个列表相当大,所以我想在页面加载后动态地将访问者的国家放在首位。在jQuery(GeoIP)中有没有一种方法可以做到这一点

我的下拉列表如下所示:

<select name="country" id="country" class="inputCombo">
    <option value="">Select an item...</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
    <option value="US">United States</option>
</select>
<select name="country" id="country" class="inputCombo">
    <option value="US">United States</option>
    <option value="">--------------</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
</select>
 <select name="country" id="country" class="inputCombo">
        <option value="CA">Canada</option>
        <option value="">--------------</option>
        <option value="AF">Afghanistan</option>
        <option value="AL">Albania</option>
        <option value="DZ">Algeria</option>
        ....
        <option value="GB">United Kingdom</option>
        <option value="US">United States</option>
    </select>

选择一个项目。。。
阿富汗
阿尔巴尼亚
阿尔及利亚
....
大不列颠联合王国
美国
如果您在美国,那么我希望它重新排列如下:

<select name="country" id="country" class="inputCombo">
    <option value="">Select an item...</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
    <option value="US">United States</option>
</select>
<select name="country" id="country" class="inputCombo">
    <option value="US">United States</option>
    <option value="">--------------</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
</select>
 <select name="country" id="country" class="inputCombo">
        <option value="CA">Canada</option>
        <option value="">--------------</option>
        <option value="AF">Afghanistan</option>
        <option value="AL">Albania</option>
        <option value="DZ">Algeria</option>
        ....
        <option value="GB">United Kingdom</option>
        <option value="US">United States</option>
    </select>

美国
--------------
阿富汗
阿尔巴尼亚
阿尔及利亚
....
大不列颠联合王国
或者如果在加拿大,像这样:

<select name="country" id="country" class="inputCombo">
    <option value="">Select an item...</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
    <option value="US">United States</option>
</select>
<select name="country" id="country" class="inputCombo">
    <option value="US">United States</option>
    <option value="">--------------</option>
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    <option value="DZ">Algeria</option>
    ....
    <option value="GB">United Kingdom</option>
</select>
 <select name="country" id="country" class="inputCombo">
        <option value="CA">Canada</option>
        <option value="">--------------</option>
        <option value="AF">Afghanistan</option>
        <option value="AL">Albania</option>
        <option value="DZ">Algeria</option>
        ....
        <option value="GB">United Kingdom</option>
        <option value="US">United States</option>
    </select>

加拿大
--------------
阿富汗
阿尔巴尼亚
阿尔及利亚
....
大不列颠联合王国
美国

对此有什么建议或技巧吗?

下面的代码基本上执行以下操作:

  • 调用支持jsonp的位置api(即?)
  • 成功后,查找具有匹配值的选项元素
  • 将其移动到顶部,方法是将其前置到“选择”
  • 将“blank”选项的文本更改为“----”
  • 我不知道使用的定位服务是否准确,或者它的使用策略是什么。您还应该将该值缓存一段时间,以防止api调用过多。此外,此代码不会检查是否可以找到具有匹配国家/地区代码的选项。在重写“blank”选项(或忘记重写)之前,应检查该选项

    工作示例

    
    选择一个项目。。。
    阿富汗
    阿尔巴尼亚
    阿尔及利亚
    大不列颠联合王国
    美国
    var url='1〕http://www.geoplugin.net/json.gp?jsoncallback=?';
    $(文档).ready(函数(){
    $.getJSON(url)
    .成功(功能(数据){
    var国家代码=data.geoplugin国家代码;
    变量$country=$(“#country”);
    $country.find('option[value=“”+country_code+'“])。prependTo($country);
    $country.find('option[value=”“])。text('--------------');
    $country.val(国家/地区代码);
    });
    });
    
    您使用哪种服务器端语言?您可能可以在服务器端执行此操作。