2013-08-27 2 views
3

Я пытаюсь перебрать набор изображений с тем же классом и приложить к ним обработчик ошибок, чтобы при ошибке я заменил изображение на стандартный образ на $(this).attr('src', 'img path');. Я помещаю это .each() в конце document.ready(). Цикл выполняет итерацию правильно, однако .error() не срабатывает, хотя у меня ошибка 404. Я попробовал .click() и предупредил о том, что произойдет вместо этого, и появилось предупреждение. Как я могу это решить, чтобы увольнять .error()?Замените изображение стандартным изображением на 404

$('img.thumbnail-img').each(function(index, element) 
{ 
    $(element).error(function() 
    { 
     load_thumbnails_error('img', this); 
    }); 
}); 
+0

Вы можете проверить свою консоль (в инструментах разработчика)? Я думаю, проблема в 'load_thumbnails_error' не в' .error' – Praveen

+0

Попробуйте посмотреть, запускается ли событие onload. На основе быстрого поиска в Google кажется, что он иногда вызывает событие onload в некоторых браузерах. –

ответ

0

От jQuery documentation:

Обработчик события должен быть присоединен, прежде чем браузер запускает событие ошибки, поэтому пример устанавливает атрибут Src после установки обработчика. Кроме того, событие ошибки может быть неправильно запущено, когда страница обслуживается локально; ошибка зависит от кодов состояния HTTP и, как правило, не запускается, если URL-адрес использует протокол file:.

Если я это понял, это означает, что если вы выполняете свой .each цикл в функции $(document).ready все картинки для их ошибок уже обожженной.

+0

, поэтому я должен уволить их за пределы документа. – Bernice

+0

Как описано в этой документации. Я бы попробовал его, прежде чем браузер отобразит html. – Martin

+0

Посмотрите здесь: также [хороший учебник] (http://www.paulund.co.uk/handle-image-loading-errors-with-jquery) – Martin

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