当用户单击我博客上的排序链接时,我想使用 AJAX 来拉入新帖子并更新排序链接部分。使用 RJS 会很容易,但我想保持我的 JS 不显眼,并且只用数据(并且没有代码)响应 AJAX 请求。
这就是我现在正在做的事情:
$('a.order_by').livequery('click', function() {
$.get(this.href, null, function(data) {
// The server returns a blob of HTML with a div#posts
// and a div#sorting
$("#posts").partial_html(data, "#posts");
$("#sorting").partial_html(data, "#sorting");
});
return false;
});
这是partial_html()
功能:
// Stolen from the jQuery source for $.load()
jQuery.fn.partial_html = function(data, selector) {
$(this).html($("<div/>").append(data.replace(/<script(.|\s)*?\/script>/g, "")).find(selector));
}
显然这有点恶心 - 这样做的正确方法是什么?(使用两个 's 会超级容易$.load()
,但这需要一个多余的 HTTP 请求)。