根据JSON数据选择下拉列表值

时间:2011-05-27 15:14:39

标签: javascript jquery json

我正在尝试构建一个简单的jquery插件,用于查询地理定位系统并返回有关用户IP所在位置的数据,并以HTML格式预选。

我有一个HTML选择,其中包含所有国家/地区代码作为值。我需要选择返回数据中引用的那个。这就是我到目前为止......

(function($){

    $.fn.geoselect = function() {

        $.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
            this.attr("selected", "selected");
        });

    };

})(jQuery);

显然,目前这不会起作用'this'与整体选择有关,而不是其中一个选项。例如,如果返回的数据是“GB”,我需要选择值为“GB”的选项。

2 个答案:

答案 0 :(得分:1)

而不是this.attr("selected", "selected");执行此操作:

var selectedData = 'GB' // assuming you extracted it from JSON data already

$("option[value='" + selectedData + "']", $(this)).attr("selected", "selected"); // Assuming that "this" is a reference to your picklist.

答案 1 :(得分:0)

你在 $。getJSON 里面,所以this不会引用您的选择。而是将其保存到父作用域中的变量,然后在回调中访问它。然后,您可以使用.find()方法获取特定的<option>代码。

我还假设您从API获取的数据是data['geoplugin_city']

$.fn.geoselect = function() {
    var dropdown = this;

    $.getJSON('http://www.geoplugin.net/json.gp?jsoncallback=?', function(data) {
        $(dropdown).find('option[value="' + data['geoplugin_city'] + '"]').attr("selected", "selected");
    });
};