2016-03-08 4 views
0

У меня есть функция JavaScript, которая не срабатывает при обновлении страницы. Он работает, когда я перехожу к странице с другой страницы, но не удается, если обновить страницу.Функция javascript не срабатывает при обновлении страницы

Вся эта функция задает высоту одного элемента страницы на высоте другого элемента (Если они оба существуют).

jQuery(document).ready(function ($) { 
    if ($(".Video_Pane iframe").length && $(".Image_Pane img").length) { 
     $(".Video_Pane iframe").height($(".Image_Pane img").height()) 
    } 
} 

Любые идеи? Консоль не показывает никаких ошибок относительно этого

+0

Не могли бы вы создать [скрипку] (https://jsfiddle.net) примера [минимального, полного и проверяемого] (http://stackoverflow.com/help/mcve)? – clinei

ответ

4

Существование img не означает, что оно было загружено (, чтобы вы могли прочитать его высоту). И обновление обычно приводит к недействительности кешированной версии изображения, поэтому ее необходимо перезагрузить.

Попробуйте использовать load событие (на окне объекта) и не ready

jQuery(window).load(function ($) { 
    if ($(".Video_Pane iframe").length && $(".Image_Pane img").length) { 
     $(".Video_Pane iframe").height($(".Image_Pane img").height()) 
    } 
}) 
+0

Это, безусловно, выглядит идеально для меня, но я предпочел вместо «загружать» окно, не может ли он быть изменен, чтобы проверить «загрузку» '$ (". Image_Pane img ")'? – Jai

+1

@jai это не было бы надежным, потому что если изображение будет кэшировано, обработчик может не быть уволен. См. Https://api.jquery.com/load-event/ и, в частности, раздел «*** Опасности события загрузки при использовании с изображениями ***» –

+1

Удивительный! пропустили эти оговорки. спасибо за повторное напоминание. – Jai

0

У вас есть ошибка синтаксиса в вас коде. После последнего } отсутствует ); отсутствует.

Я просто попытался это и его работа для меня, как это:

jQuery(document).ready(function ($) { 
    console.log("Hello"); 
}); 
+0

Нет! см. другой ** ответный ** ответ. – Jai

+0

Я увидел ответ с поддержкой. но он все равно пропускает ');' в своем коде. Или он, возможно, забыл его скопировать. –

0

Вы пропускаете кронштейн.

jQuery(document).on('ready',function() { 
    if ($(".Video_Pane iframe").length && $(".Image_Pane img").length) { 
     $(".Video_Pane iframe").height($(".Image_Pane img").height()) 
    } 
}); 

Я бы также использовал .on ('ready'), а не .ready.

+0

Нет! см. другой ** ответный ** ответ. – Jai

Смежные вопросы