jquery в фаерфоксе 4

Этот код работал нормально, пока я не перешел на Firefox 4, и теперь для изменения размера требуется два щелчка по одному и тому же изображению? Есть предположения? Вот код.

    $(document).ready(function(){

$("#slideShow a").click(function() {
var imgTitle = $(this).children('img').attr('title'); // Find the image title
$("#thecap").html(' ' + imgTitle + ' ');
$("#lgImage").attr('src', $(this).children('img').attr('rel'));
$( ".resizeme1" ).aeImageResize({ height: 372 });
});

});

Вот код плагина на случай, если кто-то что-то увидит в нем?

(function( $ ) {



  $.fn.aeImageResize = function( params ) {

    var aspectRatio = 0
      // Nasty I know but it's done only once, so not too bad I guess
      // Alternate suggestions welcome :)
      , isIE6 = $.browser.msie && (6 == ~~ $.browser.version)
      ;

    // We cannot do much unless we have one of these
    if ( !params.height && !params.width ) {
      return this;
    }

    // Calculate aspect ratio now, if possible
    if ( params.height && params.width ) {
      aspectRatio = params.width / params.height;
    }

    // Attach handler to load
    // Handler is executed just once per element
    // Load event required for Webkit browsers
    return this.one( "load", function() {

      // Remove all attributes and CSS rules
      this.removeAttribute( "height" );
      this.removeAttribute( "width" );
      this.style.height = this.style.width = "";

      var imgHeight = this.height
        ,   imgWidth = this.width
        ,   imgAspectRatio = imgWidth / imgHeight
        ,   bxHeight = params.height
        ,   bxWidth = params.width
        ,   bxAspectRatio = aspectRatio;

      // Work the magic!
      // If one parameter is missing, we just force calculate it
      if ( !bxAspectRatio ) {
        if ( bxHeight ) {
          bxAspectRatio = imgAspectRatio + 1;
        } else {
          bxAspectRatio = imgAspectRatio - 1;
        }
      }

      // Only resize the images that need resizing
      if ( (bxHeight && imgHeight > bxHeight) || (bxWidth && imgWidth > bxWidth) ) {

        if ( imgAspectRatio > bxAspectRatio ) {
          bxHeight = ~~ ( imgHeight / imgWidth * bxWidth );
        } else {
          bxWidth = ~~ ( imgWidth / imgHeight * bxHeight );
        }

        this.height = bxHeight;
        this.width = bxWidth;
      }
    })
    .each(function() {

      // Trigger load event (for Gecko and MSIE)
      if ( this.complete || isIE6 ) {
        $( this ).trigger( "load" );
      }
    });
  };
})( jQuery );

person user520300    schedule 07.04.2011    source источник
comment
Можете ли вы подойти к машине с FF3 и посмотреть, работает ли код?   -  person webdad3    schedule 07.04.2011
comment
Это работает в FF3, а также в сафари, хроме, т.е. 7, т.е. 8 (не знаю, т.е. 6 или 9)   -  person user520300    schedule 07.04.2011
comment
Какую версию jQuery вы используете?   -  person webdad3    schedule 07.04.2011
comment
code.jquery.com/jquery-latest.js я вызываю этот файл   -  person user520300    schedule 07.04.2011
comment
Я бы слепо предположил, что это как-то связано с этим плагином aeImageResize. Вы прошли через свой код, используя console.log(), чтобы убедиться, что все идет так, как вы ожидаете?   -  person Seth    schedule 07.04.2011
comment
@Seth, все еще выполняй код, используя console.log() ...?   -  person Fatih Acet    schedule 07.04.2011
comment
как мне использовать console.log()? я знаю, что консоль ошибок в firefox 4 в меню инструменты-›консоль ошибок не показывает ошибок при загрузке или после нажатия на изображения   -  person user520300    schedule 07.04.2011
comment
в основном вы должны начать с проверки console.log(imgTitle); сразу после объявления переменной. Убедитесь, что это правильный заголовок. Затем проверьте console.log($(this).children('img').attr('rel'));, чтобы убедиться, что ваши данные верны. По сути, вы можете поместить что угодно в console.log(), и если у вас установлен Firebug, проверьте элемент и щелкните вкладку консоли. Это сэкономит вам миллион раз при разработке JavaScript.   -  person Seth    schedule 07.04.2011
comment
Я использовал firebug, который не показывает ошибок или предупреждений в FF4. Возможно ли, что FF4 (имеет проблемы) препятствует правильной работе?   -  person user520300    schedule 08.04.2011
comment
Можете ли вы опубликовать HTML, с которым вы работаете? Также было бы полезно, если бы вы могли загрузить свой код на jsfiddle.net .   -  person Jeffery To    schedule 11.04.2011


Ответы (5)


добавьте событие в свою функцию в событии клика

из этого (код, который вы разместили):

$(document).ready(function(){

$("#slideShow a").click(function() {
var imgTitle = $(this).children('img').attr('title'); // Find the image title
$("#thecap").html(' ' + imgTitle + ' ');
$("#lgImage").attr('src', $(this).children('img').attr('rel'));
$( ".resizeme1" ).aeImageResize({ height: 372 });
});

});

к этому

$(document).ready(function(){

$("#slideShow a").click(function(event) {
var imgTitle = $(this).children('img').attr('title'); // Find the image title
$("#thecap").html(' ' + imgTitle + ' ');
$("#lgImage").attr('src', $(this).children('img').attr('rel'));
$( ".resizeme1" ).aeImageResize({ height: 372 });
});

});

заметил слово event во второй вашей function()

это сработало?

person IberoMedia    schedule 09.06.2011

Попробуйте FireQuery (для использования с Firebug), возможно, этот инструмент поможет вам найти проблему.

person Francisco Alvarado    schedule 07.04.2011
comment
Я не знаком с firebug или firequery, но я знаю, что firebug теперь показывает ошибки при использовании этого кода. Возможно ли, что FF4 мешает этому работать правильно? - person user520300; 08.04.2011

Просто угадал:

$(document).ready(function(){
        $("#slideShow a").click(function(e) {
            e.preventDefault();

            var imgTitle = $(this).children('img').attr('title'); // Find the image title
            $("#thecap").html(' ' + imgTitle + ' ');
            $("#lgImage").attr('src', $(this).children('img').attr('rel'));
            $( ".resizeme1" ).aeImageResize({ height: 372 });
        });
});
person ZippyV    schedule 07.04.2011

@ user520300: Также вы можете протестировать его в Firefox 3.6.16 установив его в папку, отличную от папки по умолчанию, и управляя двумя версиями в отдельных профилях (это пример для 3.0 и 3.5, но можно применить по аналогии с 3.6.16 и 4.0). Не забудьте установить Firebug (1.6.2) и Firequery также к вашему FF 3.6.16, затем, сравнив консоли, вы увидите, есть ли какая-то проблема FF4, которая мешает вашему коду работать нормально, или это просто неправильная конфигурация (например, в в этом случае), что приводит к странному поведению в FF4.

person Francisco Alvarado    schedule 08.04.2011
comment
благодаря. Я попытаюсь. Еще не очень знаком с firebug или firequery, поэтому я не уверен на 100%, что все равно правильно его выполняю, но я посмотрю, смогу ли я заметить что-то между ними. - person user520300; 08.04.2011

приятель, попробуйте загрузить последний пакет jquery и попытаться использовать этот файл js. Я думаю, что проблема в том, что FF4 неправильно поддерживает файлы js старой версии. Я не уверен, но вы можете попробовать.

person Deepak Kumar    schedule 14.04.2011
comment
ОП заявил (в комментарии), что он использует jquery-latest.js - person drudge; 14.04.2011