繁体   English   中英

jQuery-如何加载除图片以外的所有内容?

[英]Jquery - how to load everything except the images?

我目前正在研究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),但没有成功。 我怎样才能做到这一点?

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

我只有两个浏览器,可以轻松便捷地判断下载的内容:Chrome和Firefox + Firebug。 在我的测试中 ,马丁使用*:not(img)解决方案导致图像在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);
  }
});

实时示例 “包含大图像”复选框包括NASA的每日天文图片(APOD)中的大文件。

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

那IE呢? 还是没有Firebug的Firefox? 我只是对它们进行了不科学的测试,但它很有希望:如果我在IE或Firefox上运行我的马丁解决方案的实时示例,而没有在VM中使用Firebug,则我会看到VM的网络接口正在正常工作, 表明它正在下载大的APOD图片。 相反,如果我在相同的环境(清除了缓存等)中在上面运行我的解决方案 ,则看不到VM网络接口正在执行该工作, 表明下载要么没有开始,要么正在下载早早中止。

.text *:not(img)将从.text中选择不是图像的每个后代,因此从理论上讲它应该起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM