我目前正在处理一个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),但它没有用。我怎么能这样做?
答案 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中选择不是图像的每个后代,所以理论上它应该可以工作。