Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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
Javascript JQuery Images Width一半时间返回0_Javascript_Jquery - Fatal编程技术网

Javascript JQuery Images Width一半时间返回0

Javascript JQuery Images Width一半时间返回0,javascript,jquery,Javascript,Jquery,我知道这个问题和其他发帖的问题很相似,但我已经读了很多,我还是没能弄明白这个问题。我试图添加一个基于图像宽度的类。基本上,如果图像是100vw,我想添加一个名为newTransform的类 这段代码有时会起作用。但是,其他时间宽度返回为0。我发现这是因为我需要等到图像加载后再调用宽度。我想我已经在这里做到了,但它不起作用 $(function () { var galleryReel = $(".gallery-reel-item"); galleryRee

我知道这个问题和其他发帖的问题很相似,但我已经读了很多,我还是没能弄明白这个问题。我试图添加一个基于图像宽度的类。基本上,如果图像是100vw,我想添加一个名为newTransform的类

这段代码有时会起作用。但是,其他时间宽度返回为0。我发现这是因为我需要等到图像加载后再调用宽度。我想我已经在这里做到了,但它不起作用

$(function () {
    var galleryReel = $(".gallery-reel-item");

    galleryReel.each(function () {
      let img = $(this).load( "img");
      let width = img.width();
      let viewWidth = $(window).width();
      
        if (width == viewWidth) {
            $(this).addClass("newTransform");
        } 
      else {}
    });
});
更新:我的更新代码如下。现在唯一的问题是,它在应用新样式之前会闪现旧样式

$(function () {
  let timeToWait = 1000; // 1 second

  setTimeout(() => {
    var galleryReel = $(".gallery-reel-item");

    galleryReel.each(function () {
      let width = galleryReel.width();
      let viewWidth = $(window).width();
  
      if (width == viewWidth) {
        $(this).addClass("newTransform");
      } 
    });
  }, timeToWait);
});
解决方案:我最终使用的解决方案是以下代码,同时添加一些css以最初隐藏库

$(function () {
  let timeToWait = 1000; // 1 second

  setTimeout(() => {
    var galleryReel = $(".gallery-reel-item");

    galleryReel.each(function () {
      let width = galleryReel.width();
      let viewWidth = $(window).width();
  
      if (width == viewWidth) {
        $(this).addClass("newTransform");
      } 
    });
    
    //show the gallery
    $(".gallery-reel").css("visibility", "visible");
    
  }, timeToWait);
});

在html代码中的某个地方。这将首先被隐藏

<div class="gallery-items-container" style="visibility:hidden">
  //all your images are here
</div>

让img=$(this).load(“img”)当然不会执行任何等待图像加载的操作OK。如何修复它?是否
.gallery卷筒项目
元素是
元素?否。在.gallery卷筒项目内有图像元素。但是,我需要将该类添加到.gallery-revel-item中。谢谢!这似乎很有效。我确实将1000改为100,因为在应用新的转换样式之前,它正在闪烁旧样式。Ops!我意识到,如果我将timetowait设置为100,那么代码在某些屏幕上根本不适用。不管怎样,我们可以修复这个闪存吗?
让img=$(this.load(“img”)一点意义都没有我已经改变了。。。请查看上面我的更新代码。我添加了额外代码以隐藏和显示库。然后,您可以将等待时间增加到合理的数量,以便加载图像。
$(function () {

  let timeToWait = 1000; // 1 second

  setTimeout(() => {
    var galleryReel = $(".gallery-reel-item");

    galleryReel.each(function () {
      let img = $(this).load( "img");
      let width = img.width();
      let viewWidth = $(window).width();
  
      if (width == viewWidth) {
        $(this).addClass("newTransform");
      } 
    });

    //show the gallery
    $('.gallery-items-container').css('visibility', 'visible');

  }, timeToWait)
});