Здесь моя проблема, у меня есть портфолио, где изображения отображаются динамически:
<?php echo'<div class="real"><img src='".$pathReal."'></div>' ?>
Они должны изменяться в зависимости от размера изображения.
Итак, в jQuery я назначаю класс в рапорте размером изображения:
$(".real img").each(function(){
var widthImage = $(this).width();
var heightImage = $(this).height();
if(widthImage > heightImage ){
$(".real img").addClass('realHeight');
}else{
$(".real img").addClass('realWidth');
}
});
Но он не работает:
<img class="realHeight realWidth" src="img/1.jpg">
2 класс, когда я хочу, чтобы он был тем или иным.
(CSS):
.realWidth{width: 100%;}
.realHeight{height: 100%;}
Может кто-то мне помочь, пожалуйста?
(Извините за мой плохой английский)
Используйте $(this)
в вашем цикле, чтобы манипулировать правым элементом DOM (ваш тег изображения)
И используйте naturalWidth
и naturalHeight
чтобы получить правильный размер изображения.
$(".real img").each(function(){
var widthImage = $(this).naturalWidth;
var heightImage = $(this).naturalHeight;
if(widthImage > heightImage ){
$(this).addClass('realHeight');
}else{
$(this).addClass('realWidth');
}
});
Ваше эхо кажется неправильным:
<?php echo'<div class="real"><img src='".$pathReal."'></div>' ?>
который должен выглядеть следующим образом:
<?php echo'<div class="real"><img src="'.$pathReal.'"></div>' ?>
Ans, поскольку вы зацикливаете, чтобы использовать $(this)
if(widthImage > heightImage ){
$(this).addClass('realHeight');
}else{
$(this).addClass('realWidth');
}
Используйте это вместо применения селекторов классов внутри каждого
$(".real img").each(function(){
var widthImage = $(this).width();
var heightImage = $(this).height();
if(widthImage > heightImage ){
$(this).addClass('realHeight');
}else{
$(this).addClass('realWidth');
}
});
$ (". real img"). addClass ('realHeight');
Это применит класс realHeight ко всем изображениям с классом real. Мы не хотим, чтобы
$(this).addClass('realHeight');
и то же самое ниже