在插件,请尝试更换这行:
$(act).prepend('<ul class="tweetList">');
...这一点:
$(act).append('<ul class="tweetList">');
顺便说一句,插件中有一些东西让我想到它的质量。
以上面的代码为例。这里act
已经是jQuery对象了,所以不需要再包装它。你应该可以做act.append('<ul...
。
然后,它继续重新选择使用$('.tweetList')
刚创建的上述元素,而不是缓存对其的引用。这是在回调getJSON
请求的循环内完成的。非常低效。
编辑:这里有一个版本,它允许所谓的position
多了一种选择,这将接受"append"
或"prepend"
进行设置。
它也缓存列表。可以做其他改进,但无论如何,这会好一点。
$('#twitter').tweetable({username: 'username', position: 'append'});
插件:
(function ($) {
$.fn.tweetable = function (options) {
var defaults = {
limit: 5,
username: 'philipbeel',
time: false,
replies: false,
position: 'append'
};
var options = $.extend(defaults, options);
return this.each(function (options) {
var act = $(this);
var $tweetList;
var api = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=";
var count = "&count=";
$.getJSON(api + defaults.username + count + defaults.limit + "&callback=?", act, function (data) {
$.each(data, function (i, item) {
if (i == 0) {
$tweetList = $('<ul class="tweetList">')[defaults.position.toLowerCase() + 'To'](act);
}
if (defaults.replies === false) {
if (item.in_reply_to_status_id === null) {
$tweetList.append('<li class="tweet_content_' + i + '"><span class="tweet_link_' + i + '">' + item.text.replace(/#(.*?)(\s|$)/g, '<span class="hash">#$1 </span>').replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, '<a href="$&">$&</a> ').replace(/@(.*?)(\s|\(|\)|$)/g, '<a href="http://twitter.com/$1">@$1 </a>$2'));
if (defaults.time == true) {
$('.tweet_content_' + i).append('<small> ' + item.created_at.substr(0, 20) + '</small>');
}
}
} else {
$tweetList.append('<li class="tweet_content_' + i + '"><span class="tweet_link_' + i + '">' + item.text.replace(/#(.*?)(\s|$)/g, '<span class="hash">#$1 </span>').replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, '<a href="$&">$&</a> ').replace(/@(.*?)(\s|\(|\)|$)/g, '<a href="http://twitter.com/$1">@$1 </a>$2'));
if (defaults.time == true) {
$('.tweet_content_' + i).append('<small> ' + item.created_at.substr(0, 20) + '</small>');
}
}
});
});
});
}
})(jQuery);
谢谢!这解决了它。这是一个破解,但我已经修改了代码(使html输出更好,并给出更好的created_at字符串)。它确实不是那么高效,但它的代码比我发现的所有其他插件少得多,只是功能过量。 – Lode 2010-10-06 16:15:39
不客气。 :o)我发布了一些有所改进的版本。具体而言,使用“append”或“prepend”的附加选项,因此不必硬连线。该列表也被缓存。无论如何,很高兴你知道了事情。 – user113716 2010-10-06 16:19:46
不错,谢谢!直接使用它。 – Lode 2010-10-06 17:13:21