0

当用户单击我博客上的排序链接时,我想使用 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 请求)。

4

3 回答 3

1
  $("#posts").html($(data).filter("#posts").html());
  $("#sorting").html($(data).filter("#sorting").html());

为我工作。(虽然我不确定这是“正确”的做法)。

于 2009-05-12T03:19:21.080 回答
0

我认为这可能与我的问题Rails 有关:不是灰烬,不是 JS 响应,而是我刚刚发布的介于两者之间的东西。让我们看看是否能找到正确的解决方案。

于 2012-10-30T11:11:28.020 回答
0

我会将返回的数据存储在一个变量(想想缓存)中$.load(),然后使用 jQuery 从该缓存中选择 div 并将其附加到 DOM 中$.html()

于 2009-05-12T01:55:58.483 回答