2014-08-28 22 views
0

我正在使用帶有5個幻燈片的JS滑塊,每個幻燈片都帶有一個圖像和一個標題。我只想在寬度> 2xheight的圖像中添加一個類。以下是我的JS代碼:在JS中獲取多個圖像的寬度

$(".slides img").each(function() { 

    var w = $("img.gallery").width(); 
    var h = $("img.gallery").height() * 2; 

    if (w > h) { 
     $(this).addClass("auto"); 
    };      
}); 

請幫我解決這個問題。在此先感謝, Chirag。

下面是我的HTML代碼:

<div class="flex-container"> 
       <div class="flexslider"> 
        <ul class="slides"> 
         <li> 
          <span data-picture data-alt="WK Credentials"> 
           <span data-src="images/large/slide1.jpg" data-media="(min-width: 1601px)"></span> 

          </span> 
          <img src="images/slide5.jpg" id="myImg" alt="" title="" class="gallery" /> 
          <p class="flex-caption">Captions and cupcakes. Winning combination.</p> 
         </li> 
         <li> 
          <center> 
           <div class="intro"> 
            <h1 class="head">Incredible India | Tiffin</h1> 
            <p class="text">Use what you know about your users to determine whether the words 
            and phrases you plan to use are appropriate.</p> 
           </div> 
          </center> 
         </li> 
         <li> 
          <span data-picture data-alt="WK Credentials"> 
           <span data-src="images/large/slide2.jpg" data-media="(min-width: 1601px)"></span> 

          </span> 
          <img src="images/slide2.jpg" id="myImg" alt="" title="" class="gallery" /> 
          <p class="flex-caption">This image is wrapped in a link!</p> 
         </li> 
         <li> 
          <span data-picture data-alt="WK Credentials"> 
           <span data-src="images/large/slide3.jpg" data-media="(min-width: 1601px)"></span> 

          </span> 
          <img src="images/slide3.jpg" id="myImg" alt="" title="" class="gallery" /> 
          <p class="flex-caption">Captions and cupcakes. Winning combination.</p> 
         </li> 
         <li> 
          <span data-picture data-alt="WK Credentials"> 
           <span data-src="images/large/slide4.jpg" data-media="(min-width: 1601px)"></span> 

          </span> 
          <img src="images/slide4.jpg" id="myImg" alt="" title="" class="gallery" /> 
          <p class="flex-caption">Captions and cupcakes. Winning combination.</p> 
         </li> 
         <li> 
          <span data-picture data-alt="WK Credentials"> 
           <span data-src="images/slide5.jpg" data-media="(min-width: 1601px)"></span> 
          </span> 
          <img src="images/slide5.jpg" id="myImg" alt="" title="" class="gallery" /> 
          <p class="flex-caption">Extra Wide Image</p> 
         </li> 
        </ul> 
       </div> 

       <ul class="flex-direction-nav"> 
        <li><a class="prev" href="#"><img src="images/themes.png" alt="" title="" /></a></li> 
        <li><a class="next" href="#"><img src="images/themes.png" alt="" title="" /></a></li> 
       </ul> 

      </div> 

回答

0

試試這個:

$(document).ready(function(){ 
    $(".slides img").each(function(){ 
    $(this).load(function(){ 
     var w = $(this).width(); 
     var h = $(this).height() *2; 

     if(w > h){ 
      $(this).addClass("auto"); 
     }; 
    }); 
    }); 
}); 
+0

此代碼不是wankring – chirag 2014-08-28 05:31:44

+0

@ user3630952,請參閱我對其他答案的評論。如果圖像未加載到DOM中,它將返回高度和寬度0. – 2014-08-28 05:32:29

+0

嗨,詹姆斯,這也不起作用 – chirag 2014-08-28 05:38:58

0

如果類「畫廊」其實是顯著這裏這可能幫助,否則其他的答案會工作。

$(window).load(function(){ 
    $(".slides img.gallery").each(function(){ 
     if($(this).width() > ($(this).height()*2)) { 
      $(this).addClass("auto"); 
     }; 
    }); 
}); 
+0

@ user3630952我已經更新了這個文件,並使用您的代碼在本地進行了測試(儘管不是您的圖片顯然不可用)。加載函數的最大問題是它們在瀏覽器中非常不靈活。 – bejs 2014-08-28 06:14:28

+0

針對跨瀏覽器的問題,這是jQuery開發人員已知的一個問題:http://api.jquery.com/load-event/ – bejs 2014-08-28 06:16:44

+0

您好,只需嘗試使用1個potrait圖像,1個橫向圖像和1個額外的寬圖像。 – chirag 2014-08-28 06:27:44