@raindew

Как должно выглядеть условие, если перед ним расположена функция?

Здравствуйте. Подскажите, пожалуйста, каким образом нужно изменить скрипт, чтобы можно было работать с условием "если то" для следующей функции:

-- Jquery ---
$(document).ready(function(){
	$('.photo li').waitForImages(function() { // Функция, которая следит, загрузилась ли картинка.
		if($(this)){
			$(this).show(); // если картинка найдена, показываем элемент с картинкой.
		}else{
			$(this).remove(); // если нет, удаляем элемент.
		}
	});
});


-- CSS --
.photo:nth-child(1) li:nth-child(1) {background: url("../img/cake.jpg") no-repeat;} - такая картинка есть.
.photo:nth-child(2) li:nth-child(1) {background: url("../img/caked.jpg") no-repeat;} - такой нет.
.photo:nth-child(3) li:nth-child(1) {background: url("../img/cakef.jpg") no-repeat;} - такой нет.
.photo li {
	display: inline-block;
	border: 1px solid black;
	width: 270px;
	height: 200px;
}


-- HTML --
<ul class="photo">
	<li></li>
</ul>
<ul class="photo">
	<li></li>
</ul>
<ul class="photo">
	<li></li>
</ul>
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Можно так
$(document).ready(function() {
    $('.photo li').waitForImages(function() {
        $(this)[$(this).length ? 'show' : 'remove']();
    });
});
но тут надо видеть функцию waitForImages, чтобы быть уверенным, что это будет работать. А пока меня грызут сомнения, т.к. метод применяется не к изображению, а к элементу LI. Если внутри callback-функции this ссылается на него, то всегда будет отрабатывать show()

UPD Пробуйте такой вариант:

$(function(){
    $('.photo li').waitForImages({
        each: function(loaded, count, success) {
            $(this)[success ? 'show' : 'remove']();
        },
        waitForAll: true
    });
});

Пример в песочнице. Второго изображения не существует
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@raindew Автор вопроса
Благодарю Дениса за оперативный ответ, скрипт работает, спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 мая 2024, в 22:37
20000 руб./за проект
17 мая 2024, в 22:33
1000 руб./за проект
17 мая 2024, в 22:30
5000 руб./за проект