我正在尝试构建一个简单的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”的选项。
答案 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");
});
};