gpt4 book ai didi

javascript - jQuery 插件覆盖参数

转载 作者:行者123 更新时间:2023-11-30 13:40:43 24 4
gpt4 key购买 nike

这可能是一个非常平凡的问题,但这是我编写的第一个 jQuery 插件,我对 JavaScript 中的范围规则的理解有点模糊。

我正在尝试编写一个围绕 Stack Overflow API 的简单 jQuery 插件。我开始尝试使用 Flair API。

我想让插件尽可能地可配置,这样您就可以轻松地向它传递域和用户 ID,并生成多个 Flairs。

    var superUser = $.jStackOverflow.flair({domain:"superuser.com", id: 30162, parentId:'#su-flair'});
var stackOverflow = $.jStackOverflow.flair({domain:"stackoverflow.com", id: 55954, parentId:'#so-flair'});

问题是,当它进行第二次调用时,它以某种方式使用了正确的域和 ID 参数,但它在回调函数中用于创建 HTML 的 parentId 字段使用的是第一个参数。

你可以看到 plugin hereHTML here

最佳答案

更新

演示: http://jsbin.com/epeti3/5

/* 16/02/2012 02.04.38 */
(function($) {
$.fn.jStackOverflow = function(options) {
var opts = $.extend({},
$.fn.jStackOverflow.defaults, options);
return this.each(function() {
$this = $(this);
var opt = $.meta ? $.extend({},
opts, $this.data()) : opts;
var result;
var id = this.id;
var flair = $.fn.jStackOverflow.flair(opt, id);
$this.html(flair);
});
};
$.fn.jStackOverflow.setApis = function(options) {
var apis = options.protocol + options.domain + options.gTLD + "/users/flair/" + options.id + "." + options.format;
if (options.makeCallbacks) {
apis += "?callback=?";
}
return apis;
};
$.fn.jStackOverflow.flair = function(options, id) {
var api = $.fn.jStackOverflow.setApis(options);
if (options.makeCallbacks) {
result = $.getJSON(api,
function(data) {
$.fn.jStackOverflow.flairCallback(data, options, id);
});
}
return result;
};
$.fn.jStackOverflow.flairCallback = function(data, options, id) {
for (var key in data) {
if (data.hasOwnProperty(key)) {
$('<div class="' + key + '"></div>').html(key + ' : ' +data[key]).appendTo('#' + id);
}
}
};
$.fn.jStackOverflow.defaults = {
protocol: 'http://',
domain: 'stackoverflow',
gTLD: '.com',
format: 'json',
makeCallbacks: true
};
})(jQuery);

使用:

<div id="so-flair"></div>

$(function() {
$('#so-flair').jStackOverflow({domain:"stackoverflow", id: 91130 });
});

关于javascript - jQuery 插件覆盖参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com