Jquery - 如何加载除图像之外的所有内容?

时间:2011-03-13 12:20:09

标签: javascript jquery

我目前正在处理一个WordPress添加,当被要求加载完整的帖子内容(通常它显示例外)。我做了这样的代码:

$(".readMore").click(function() {
var url = $(this).attr("href");
$(this).parent("p").parent("div").children("div.text").slideUp("slow", function () {
    $(this).load(url + " .text", function(){
        $(this).slideDown("slow");
    });
});
$(this).parent("p").fadeOut();
return false; });

它有效。但我不想加载图像。我试过.text:not(img),但它没有用。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

当然,技巧是防止用户的浏览器不必要地下载图像;不显示很容易。

我只有两个浏览器,可以轻松方便地告诉我们正在下载什么:Chrome和Firefox + Firebug。 In my tests,使用*:not(img)的Martin solution导致Chrome和Firefox + Firebug中的图片被下载(尽管未显示)。 (我强调“Firefox + Firebug”,因为Firebug有时可以改变Firefox的行为,所以它可能会在这里改变它的行为,虽然我认为不是这样;更多的是在下面。)

这需要一些调整,但这似乎可以解决问题(更多关于下面的测试):

$.ajax({
  url: url,
  success: function(data) {
    var div = $("<div>").html(data);
    if (stripImages) {
      // Find the images, remove them, and explicitly
      // clear the `src` property from each of them
      div.find("img").remove().each(function() {
        this.src = "";
      });
    }
    $(targetSelector).append(div.children());
  },
  error: function(jxhr, status, err) {
    display("ajax error, status = " + status + ", err = " + err);
  }
});

Live example“包含大图”复选框包含美国国家航空航天局当天的天文图片(APOD)中的大文件。

关键是将src元素的img设置为""。在Chrome上,只需删除元素即可阻止Chrome开始下载图片,但在Firefox + Firebug上,它不仅开始下载,而且即使下载花了相当长的时间也会继续下载。清除src会导致Firefox中止下载(我可以在Firebug Net控制台中看到这一点)。

那么IE怎么样?还是没有Firebug的Firefox?我只是对这些进行了不科学的测试,但它很有前途:如果我在虚拟机中没有Firebug的IE或Firefox上运行Martin's solution的实时示例,我看到虚拟机的网络界面正在努力工作,建议它正在下载那张大APOD图片。相反,如果我在相同的环境中运行my solution above(清除缓存等等),我看不到VM网络接口正在做那项工作,建议下载要么没有开始,要么在早期就被中止。

答案 1 :(得分:0)

.text *:not(img)将从.text中选择不是图像的每个后代,所以理论上它应该可以工作。