Почему эта функция не запущена?

#javascript #jquery

#javascript #jquery

Вопрос:

   $('.posts li img').each(function() {
    if( this.complete )
      imageResize($(this), 64, 64);
    else
      $(this).load(imageResize($(this), 64, 64));
  });
  

Я попытался добавить «alert (‘test’)» в imageResize(), но это не работает. Есть ли какая-либо причина, по которой imageResize() не вызывается?

Комментарии:

1. Есть ли у узла DOM complete атрибут? Кроме того, вы хотите использовать {} для if() , если вам нужно более одного оператора. Лично я бы посоветовал избегать использования управляющих структур, разделенных пробелами, в Javascript.

Ответ №1:

Сделайте это функцией:

 $(this).load(function(this) {imageResize(this, 64, 64)});
  

Ответ №2:

Не уверен, что это проблема, но это, безусловно, потенциальная проблема. Второй вызов imageResize() будет выполнен немедленно, а код возврата будет использован в качестве обработчика события загрузки. Вам нужно обернуть ее в анонимную функцию и использовать ее вместо этого, например

   $('.posts li img').each(function() {
    if( this.complete )
      imageResize($(this), 64, 64);
    else
      $(this).load(function() {imageResize($(this), 64, 64);});
  });