Jquery删除图片

pra*_*432 5 javascript jquery

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

我想

$(image).removeAttr("src")
Run Code Online (Sandbox Code Playgroud)

会这样做,它正确地删除了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")
Run Code Online (Sandbox Code Playgroud)

Dav*_*ing 4

如果您正在尝试清除内存(据我所知,这将是删除不可见图像的唯一原因),那么您就准备好了。

\n\n

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

\n\n

将节点移动到垃圾箱并清空它被认为是一个好方法:

\n\n
var $trash = $('<div>').hide().appendTo('body');\n\nvar waste = function(node) {\n    $trash.append(node).html('');\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可能会幸运地用空 GIF 替换源:

\n\n
$(image).attr('src','data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAA\xe2\x80\x8c\xe2\x80\x8bLAAAAAABAAEAAAICRAEAOw%3D%3D');\n
Run Code Online (Sandbox Code Playgroud)\n\n

这也将使节点保持在适当的位置和图像宽度/高度。

\n\n

但我非常怀疑这是否会在您的情况下带来任何性能提升,最好的办法是不要用太多数据给浏览器带来压力。

\n\n

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

\n