在插件,請嘗試更換這行:
$(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