#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
у меня есть страница с чем-то вроде:
link
link
link
link
somethingelse(div)
с помощью моего скрипта я меняю ссылку в img, а после мне нужно отредактировать что-то еще….
но теперь у меня проблема .. мне нужны шнуры div, но когда я пытаюсь его получить, я получаю шнуры ДО загрузки img …. и я получаю неправильные шнуры….
как я могу запустить функцию после полной загрузки изображений?
псевдокод:
$("a").each(function(){ replaceAtoIMG(this)}); //change <a> with <img> and add a new image loading
$("div").each(function(){ $(this).position() }); //return value BEFORE the fully completed load
Комментарии:
1. Легко. подождите, пока изображения не будут загружены, чтобы получить позицию. Если вы не уверены в том, как это сделать, возможно, это должен был быть ваш вопрос, однако это повторяется много раз.
2. я пытался с помощью . загрузить или готово… но я не понимаю, как это работает…
3. Ни один из этих методов вам не поможет. вам нужно будет перебирать каждое изображение и определять, когда каждое из них заканчивается. Когда все они будут закончены, вы получите позицию.
4. о, что-то вроде $(‘img’).on(‘load’, function() { if ($(‘img’) . длина == X) иначе X });
5. точно так же (игнорируя синтаксис)
Ответ №1:
$('img').on('load', function() {
// do whatever you want
});
Это должно решить, по крайней мере, вашу проблему с загрузкой.
Извините, был на работе и пользовался телефоном для stackoverflow, так что пришлось поторопиться.
Однако, если вам нужно, чтобы ваша функция применялась к каждому изображению при загрузке, вы можете обернуть свою функцию при загрузке внутри функции each() . Непроверенный, поэтому может потребоваться небольшая доработка:
$('img').each(function(){
$(this).on('load', function() {
// do whatever you want });
});
Это должно прикрепить эту функцию ко всем тегам img и запустить, когда они закончат загрузку. Затем вы можете использовать их координаты или то, чего вы не пытаетесь достичь. Ваш псевдокод меня смутил.