Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery-预加载图像(使用JQuery/native JavaScript/CSS)_Javascript_Jquery_Css_Image_Preloading - Fatal编程技术网

JQuery-预加载图像(使用JQuery/native JavaScript/CSS)

JQuery-预加载图像(使用JQuery/native JavaScript/CSS),javascript,jquery,css,image,preloading,Javascript,Jquery,Css,Image,Preloading,我之前问过一个问题,如何将鼠标悬停在一个小图像上,并将一个附加图像加载到页面的右侧。我的一切都正常工作,但现在我想预加载图像 如何使用JQuery预加载图像,以便在需要时立即向用户显示图像(无需加载时间)?预加载图像的最简单方法如下: function preload(selector, url) { $('<img/>').attr({ src: url, height: '1px', width: '1px' }).

我之前问过一个问题,如何将鼠标悬停在一个小图像上,并将一个附加图像加载到页面的右侧。我的一切都正常工作,但现在我想预加载图像


如何使用JQuery预加载图像,以便在需要时立即向用户显示图像(无需加载时间)?预加载图像的最简单方法如下:

function preload(selector, url) {
    $('<img/>').attr({
        src: url,
        height: '1px',
        width: '1px'
    }).appendTo($(selector)).delay(1000).remove();
}
函数预加载(选择器、url){

$('您可以非常轻松地预加载图像,如下所示:

使用JQuery

function preloadImg(src) {
    $('<img/>')[0].src = src;
}

preloadImg('http://yoururl/to/the/picture.jpg');

或者使用CSS(无需JavaScript)

您还可以使用CSS(和HTML)预加载图像

CSS:
div#preload{display:none;}

HTML:

<div id="preload">
   <img src="http://yoururl/to/the/picture1.jpg" width="1" height="1" alt="Image 1" />
   <img src="http://yoururl/to/the/picture2.jpg" width="1" height="1" alt="Image 2" />
   <img src="http://yoururl/to/the/picture3.jpg" width="1" height="1" alt="Image 3" />
</div>

我就是这样做的

我查找了所有悬停状态图像,然后通过将-nm(正常)替换为-hv(悬停)预加载悬停状态

这样做的好处是没有URL的硬编码

$(function() {
        $(this).find("img[src*='-nm']").each(function () {
           $('<img/>')[0].src = this.src.replace(/-nm/, "-hv");
        });
})
$(函数(){
$(this).find(“img[src*='-nm']”)。每个(函数(){

$(“这几乎是一个重复的问题。不需要jQuery来预加载图像。在这里进行简单的搜索可以找到几十篇关于这个主题的文章。这里有一篇文章在全部加载后甚至会给你回电话:因此,我将替换preloimg('yoururl/to/the/picture.jpg'));使用我使用的每个图像的url?这将如何改变我调用的方式。hover?基本上是的。请您解释一下您到底想做什么?谢谢您回复我。正如您所看到的,我有一个html表。在其中一个表中,我有一个播放器的小img。剩余的单元格中有关于该播放器的信息。在img上,将鼠标悬停在不同的大屏幕上玩家的img显示在右边。我已经弄清楚了这一部分。所以我要教自己的下一件事是如何预加载这些img。我已经看到了几种预加载img的方法,但是我对每个玩家有两个不同的img的方式有些迷茫,一个直到悬停(总共46个img)才显示出来,并在悬停时调用它们。我希望这有助于理清我的思路。您可以通过对所有较大的图像进行迭代并为每个图像调用Preloimg来预加载它们。然后浏览器缓存这些图像。当用户悬停小图像时,您只需创建图像标记(src=大图像url)或者你可以在相应的单元格中插入所有图像,并使用css(或js)隐藏它们。然后在悬停状态下,你只需更改可见性。我就是这么做的。据我所知,除了Safari(版本7.0.1(9537.73.11),Mac OS X 10.9.1)之外,这在任何地方都有效.有什么想法吗?有人能证实吗?
$(function() {
        $(this).find("img[src*='-nm']").each(function () {
           $('<img/>')[0].src = this.src.replace(/-nm/, "-hv");
        });
})