jQuery只能在页面刷新后才能工作

时间:2018-02-23 02:00:59

标签: jquery

我对任何Javascript都很糟糕,所以我认为这很容易,但我认为我寻找答案的方式是错误的。我试图将一个带有jQuery的类添加到比它们更宽的图像(肖像)。我的jquery看起来像这样:

jQuery(document).ready(function($){
    var imgs = $(".isLandscape");
    imgs.each(function(){
        var img = $(this);
        var width = img.width();
        var height = img.height();

        if(width < height){
            img.parent('li').addClass('portrait');
        }
    })
});

在初始页面加载后刷新页面后,它可以正常工作。为了澄清:首次加载页面,.isLandscape未添加到<li>元素。我刷新了页面,.isLandscape类被添加到<li>元素中,一切都是我希望它在第一次加载时的样子。我错过了什么?

我尝试过的一些事情:

  1. (window).on("load", function...。而不是(document).ready...和一些不同的变体。

  2. 将jquery加载到<head>与<&#39;

  3. 我用Google搜索了一堆随意的东西。

  4. 可能有助于我帮助的一些事情:

    1. 它是一个wordpress网站。

    2. 显然我在javascript上很糟糕。

    3. 提前感谢您的帮助。

      修改

      感谢大家的帮助。帮助我的小费是我没有听完所有要装满的东西。这是我的最终代码:

      jQuery(document).ready(function($){
        $(window).load(function(){
          $(".isLandscape").each(function(){
              var img = $(this);
              var width = img.width();
              var height = img.height();
      
              if(width < height){
                  img.parent('li').addClass('portrait');
              }
          })
        });
      });
      

      我需要: 1.确保dom准备就绪jQuery(document).ready

      1. 他们确保所有内容都已加载$(window).load(function...,这与我相信的$(window).on("load", function()...相同。
      2. 对于那些发现这一点的人来说只是一张纸条:

        我尝试使用window"img"而不是".isLandscape"来查看特定元素是否已加载且均未加载。我认为因为页面上有许多图像和图像.isLandscape,但我并不完全确定。

2 个答案:

答案 0 :(得分:1)

在我原来的问题中查看上面的更多信息:

jQuery(document).ready(function($){
  $(window).load(function(){
    $(".isLandscape").each(function(){
        var img = $(this);
        var width = img.width();
        var height = img.height();

        if(width < height){
            img.parent('li').addClass('portrait');
        }
    })
  });

});

答案 1 :(得分:0)

所以我不知道你的html结构,当.isLandscape添加到<li>标签时,我只能给你一些伪代码。

$(document).ready(function(){
    $(document).on('load','.isLandscape',function(event){
        var img = $(event.currentTarget);
        var width = img.width();
        var height = img.height();

        if(width < height){
            img.parent('li').addClass('portrait');
        }
  });
}); 

关于jquery on的文档。第二个document可以是所有.isLandscape的父标记,load事件可以是添加.isLandscape时的事件<li>代码。