@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>
  • Вопрос задан
  • 128 просмотров
Решения вопроса 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 Автор вопроса
Благодарю Дениса за оперативный ответ, скрипт работает, спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы