Выбор раскрывающегося значения на основе данных JSON - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь создать простой плагин jquery, который запрашивает систему геолокации и возвращает данные о том, где находится IP пользователя, предварительно выбрав его в форме HTML.

У меня есть выбор HTML со всеми кодами стран в качестве значений. Мне нужно выбрать тот, который указан в возвращаемых данных. Это то, что я до сих пор ...

(function($){

    $.fn.geoselect = function() {

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

    };

})(jQuery);

Очевидно, что в настоящее время это не будет работать, поскольку «это» относится к селекту в целом, а не к одному из его вариантов. Если возвращенные данные, например, «ГБ», мне нужно выбрать параметр со значением «ГБ».

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Вместо 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.
0 голосов
/ 27 мая 2011

Вы внутри $. 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");
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...