jQuery в Firefox 4 - PullRequest
       0

jQuery в Firefox 4

6 голосов
/ 07 апреля 2011

Этот код работал нормально, пока я не перешел на 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 );

Ответы [ 5 ]

1 голос
/ 07 апреля 2011

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

0 голосов
/ 09 июня 2011

добавить событие к вашей функции в рамках вашего события клика

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

$(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 во второй функции ()

сработало?

0 голосов
/ 14 апреля 2011

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

0 голосов
/ 08 апреля 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.

0 голосов
/ 07 апреля 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 });
        });
});
...