Ваш код не работает из-за $(this)
. this
не указывает на элемент изображения здесь, но указывает на самый последний экземпляр области.
Попробуйте это, используя цикл jQuery each
для циклического прохождения всех элементов изображения, а затем условно добавьте требуемый класс.
$("img").each(function(){
var $this = $(this);
if ($this.width() > $this.height()) {
$this.addClass("horizontal");
}
});
Если у вас есть класс ".img"
для всех элементов изображения, вы можете использовать селектор классов.
$(".img").each(function(){
var $this = $(this);
if ($this.width() > $this.height()) {
$this.addClass("horizontal");
}
});
В качестве альтернативы вы можете использовать метод jQuery filter
, чтобы отфильтровать все изображения, ширина которых больше высоты, а затем сразу добавить требуемый класс.
$(".img").filter(function()
var $this = $(this);
return $this.width() > $this.height();
}).addClass("horizontal");
.filter()
- Сокращает набор соответствующих элементов до тех, которые соответствуют селектору или проходят тест функции.
Если вы делаете это при загрузке страницы, убедитесь, что вы выполнили этот код в событии загрузки окна, которое обеспечит загрузку всех изображений.
$(window).load(function(){
$(".img").each(function(){
var $this = $(this);
if ($this.width() > $this.height()) {
$this.addClass("horizontal");
}
});
});