Jquery删除图片

时间:2012-09-06 08:56:56

标签: javascript jquery

我的整体问题是延迟加载图片。我已经到了我只在屏幕上加载图像的地步。我需要删除不在屏幕上的图像。

我想

$(image).removeAttr("src")

会这样做并正确删除src,但它不会从屏幕上清除图像,也不会用alt中的内容替换它。

如何删除图片?注意,我不想删除img标签(我以后需要它),只需清除屏幕上的图像即可。

其他可能相关的代码(虽然我不知道为什么) -

updateCarImages:=>
    imagesOnScreen = $(@el).find(".carImageClass:onScreen")
    imagesOffScreen = _.without(cachedImagesOnScreen,imagesOnScreen)
    for image in imagesOnScreen
      imgSrc = $(image).attr("src")
      if (!imgSrc)
        id = $(image).data("tooltip-id")
        console.log(id)
        result = resultsStore.get(id+"")
        console.log(result)
        $(image).attr("src", result.get("carImageUrl"))
    console.log(imagesOffScreen)
    for image in imagesOffScreen
      $(image).removeAttr("src")

7 个答案:

答案 0 :(得分:4)

如果您正在尝试清除记忆(我认为这是删除不可见图像的唯一原因),那么您就可以开车了。

没有防弹方法强制浏览器这样做。浏览器调用垃圾收集器的唯一方法是达到一定的内存限制,然后提示收集器首先应该采取什么。

将节点移动到bin并清空它被认为是一种好方法:

var $trash = $('<div>').hide().appendTo('body');

var waste = function(node) {
    $trash.append(node).html('');
}

使用空GIF替换源代码可能会很幸运:

$(image).attr('src','data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAA‌​LAAAAAABAAEAAAICRAEAOw%3D%3D');

这也将保持节点和图像宽度/高度。

但是我非常怀疑任何一种情况都会导致你的情况有任何性能提升,最好的办法就是不要在浏览器上施加过多的数据。

iOS for iPad(特别是版本4.x)因内存限制较低而闻名,如果你留下太多的IMG节点,很容易崩溃。

答案 1 :(得分:3)

如果您的问题是性能,那么您可以使用预先存在的延迟加载jQuery插件。没有必要重新发明轮子。

http://www.appelsiini.net/2012/lazyload-170


或者,如果您不想使用此插件,则可以将src值存储在data-*属性中,并在您希望显示时将其附加到src。< / p>

隐藏

$(image).data("src", $(image).attr("src"));
$(image).removeAttr("src");
$(image).hide();

显示时

$(image).attr("src", $(image).data("src"));
$(image).show();

答案 2 :(得分:2)

隐藏图片:

$(image).hide();

这会在图片上设置style="display:none;"并使其不显示


删除图片:

$(image).remove();

这将从DOM中物理删除它,使其不再存在


混合方法(将图像保留在DOM中并允许您稍后更改)

//Remove the SRC and hide the image
$(image).removeAttr("src").hide();

//Then when you want to change to a new image
$(image).attr("src", "iamge.gif").show();

答案 3 :(得分:1)

您可以简单地隐藏图像。如果你不去那里,你可以创建1px图像而不是:

$(image).attr('src', '1px.png');

答案 4 :(得分:1)

如果要隐藏图像,但要在占用空间而不影响容器的滚动条方面保留图像,请使用visibility: hidden样式:

$(image).css('visibility', 'hidden');

答案 5 :(得分:0)

您只需从此代码中删除图片即可。我试过了。

$('.img2').dblclick(function()
{
    $(".img2").removeAttr('src');
});

答案 6 :(得分:-1)

下面的代码显示了如何删除图像源

 var image_holder = $("#preview-image-holder");
 image_holder.empty();