【发布时间】:2011-10-09 17:01:38
【问题描述】:
我正在尝试转换一个非常简单的脚本,该脚本从 Twitter 获取搜索结果并将其输出到无序列表中。这是我第一次尝试编写插件,当我调用它时它似乎并没有触发所有代码。自己编写的脚本可以正常工作,这是我为插件编写的代码:
(function($) {
$.fn.tweetGet = function(options) {
var defaults = {
query: 'from:twitter&rpp=10',
url: 'http://search.twitter.com/search.json?callback=?&q='
};
var options = $.extend(defaults, options);
return this.each(function() {
// Get tweets from user query
$.getJSON(options.url + options.query, function(data) {
var tweets = [];
$.each(data.results, function(i, tweet) {
tweets.push('<li>' + tweet.text.parseURL().parseUsername().parseHashtag() + '</li>');
});
$('#target').append('<ul>' + tweets.join('') + '</ul>');
});
// Parse tweets for URLs and convert to links
String.prototype.parseURL = function() {
return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.=]+/g, function(url) {
return url.link(url);
});
};
// Parse tweets for twitter usernames and convert to links
String.prototype.parseUsername = function() {
return this.replace(/(?:^|\s)@[a-zA-Z0-9_.-]+\b/, function(user) {
var username = user.replace("@","")
return user.link("http://twitter.com/"+username);
});
};
// Parse tweets for hashtags and convert to links
String.prototype.parseHashtag = function() {
return this.replace(/[#]+[A-Za-z0-9-_]+/g, function(hash) {
var hashtag = hash.replace("#","%23")
return hash.link("http://search.twitter.com/search?q="+hashtag);
});
};
});
};
})(jQuery);
函数被调用:
$('#target').tweetGet({query: 'from:twitter&rpp:10'});
return this.each(function() {}; 之外的所有内容都可以正常工作,但其中的任何内容都不会触发或给我任何错误。我读过的所有教程似乎都在使用同样的基本格式,但我似乎无法弄清楚我做错了什么......
【问题讨论】:
-
不应该 this.each(function() 是 $(this).each(function()
-
我从文档中记得 $.fn.tweetGet 应该是 jQuery.fn.tweetGet
-
@eicto 从我在docs.jquery.com/Plugins/Authoring 上读到的内容看来都很好。
-
@phntmSPACEMAN 你是对的,这些都不是问题。
标签: jquery plugins jquery-plugins twitter