如果图像高度大于宽度,则Jquery addClass
我有一个关于jquery addClass图像的问题。
我在codepen.io的这个DEMO中尝试这个想法
所以问题是如果图像高度大于宽度,则javascript不会从图像中添加类。 谁能在这方面帮助我?
这是我的测试jquery代码:
$(document).ready(function() { var img = document.getElementById('.user_posted_image'); //or however you get a handle to the IMG var width = img.clientWidth; var height = img.clientHeight; if(width < height){ $('img').addClass('portrait'); } });
使用$(".user_posted_image")
而不是document.getElementById('.user_posted_image')
。 您正在尝试通过.classSelector获取项目。
document.getElementById
它只用于标识符,但是如果你有jQuery库,你可以改用#idSelector 。 此外,您可以利用jQuery.width()和jQuery.height()方法。
$(document).ready(function() { var img = $('#user_posted_image');//jQuery id selector var width = img.width(); //jQuery width method var height = img.height(); //jQuery height method if(width < height){ img.addClass('portrait'); } });
编辑(Demo CodePen) :您正在使用多个图像,您应该使用.each方法来引用所有元素,在第一个代码中只能使用一个元素。
$(document).ready(function() { var imgs = $('.imgpreview');//jQuery class selector imgs.each(function(){ var img = $(this); var width = img.width(); //jQuery width method var height = img.height(); //jQuery height method if(width < height){ img.addClass('portrait'); }else{ img.addClass('landscape'); } }) });
猜猜你想要这样的东西: http : //codepen.io/BramVanroy/pen/MwrJMx
$(document).ready(function() { var img = $('.user_posted_image'); img.each(function() { var $this = $(this), width = $this.children("img").width(), height = $this.children("img").height(); if (width < height) { $this.addClass('portrait'); } else { $this.addClass('landscape'); } }); });
使用指定的类迭代所有div。 如果内部的图像宽度小于其高度:添加class级肖像。 另外:添加课堂景观。
注意 :正如评论中指出的那样,您需要等待加载图像才能成功运行此脚本。 我过去成功使用过imagesLoaded插件 。
包括imagesLoaded插件,它将如下所示:
$(document).ready(function() { $(".chated-poeople").imagesLoaded(function() { var img = $('.user_posted_image'); img.each(function() { var $this = $(this), width = $this.children("img").width(), height = $this.children("img").height(); if (width < height) { $this.addClass('portrait'); } else { $this.addClass('landscape'); } }); }); });
不要忘记在HTML中添加插件: