Как я могу выбрать img, помещенный в промежуток с appendChild?

0

Я использую picturefill.js(Scott Jehl): /picturefill.js

Здесь, как у меня есть настройка, (в некотором коде пропущен b/c это просто больше материала для медиа-запросов), используя теги span и атрибуты данных, как в его документации:

<figure>
    <a href='http://www.casaromeromexican.com'>
        <span id="picture" data-picture data-alt="Casa Romero Mexican website">
        <span data-src="img/casa-romero-mexican.jpg"></span>
        <span data-src="img/[email protected]" data-media="(min-device-pixel-ratio: 2.0)"></span>
        <span data-src="img/casa-romero-mexican-md.jpg" data-media="(min-width: 768px") </span> 
// and so on...

Правильный img загружается и помещается на страницу, как и ожидалось. Вот фрагмент сгенерированного HTML:

<span data-src="img/casa-romero-mexican-md.jpg" data-media="(min-width: 768px)"><img alt="Casa Romero Mexican website" src="img/casa-romero-mexican-md.jpg"></span>

То, что я хотел бы сделать, это добавить класс к тому, что img-тег заканчивается получением.

Тем не менее, я даже не могу выбрать добавленный img! Вот с чем я работаю:

alert(($('#picture').children().find('img').size()));

Это возвращает 0, даже если изображение находится на странице. Я ожидаю, что он вернет размер 1, b/c на основе медиа-запросов, 1 из изображений добавляется на страницу с помощью picturefill.

Чтобы быть уверенным, что не было проблем с загрузкой DOM, я поместил picturefill.js в заголовок (хотя JS должен был ходить в нижнем колонтитуле большую часть времени), и даже сделал это:

$(document).ready(function() {
        alert('ready!');
        alert(($('#picture').children().find('img').size()));
        });

Кажется, все еще не найден img.

  • 0
    как насчет $('#picture img') и если вам нужен последний, просто $('#picture img:last')
  • 0
    и у вас есть теги span, а не img-теги .. так почему вы ищете что-то там, что нет ..
Показать ещё 9 комментариев
Теги:
picturefill

1 ответ

0
Лучший ответ

http://learn.jquery.com/using-jquery-core/document-ready/

Прочитав это, я понял, почему jQuery не нашел img. В этом случае необходимо было использовать $ (window).load(function() {...}). Это не будет запускать скрипт до загрузки всей страницы, в отличие от $ (document).ready(), который ожидает только DOM.

Другими словами, $ (document).ready() отлично работает в большинстве случаев, но не при ожидании элементов мультимедиа, которые могут потребоваться больше времени для загрузки и/или должны быть получены с помощью запроса!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню