jQuery следующие / предыдущие кнопки не работают должным образом в IE7 - PullRequest
1 голос
/ 23 марта 2011

У меня есть следующий код jQuery:

jQuery(document).ready(function(){

    var list = jQuery('#content-list .mask ul').get(0);
    var mask = jQuery('#content-list .mask').get(0);
    var next = jQuery('#content-list .next').get(0);
    var previous = jQuery('#content-list .previous').get(0);

    var listHeight = parseInt(jQuery('#content-list').first().attr('listheight'));

    var isAnimating = false;
    var duration = 'slow';
    var easing = 'swing';
    var min = Math.floor(jQuery(list).innerHeight()/listHeight)*-listHeight;
    var max = 0;
    var current = 0;

    if(list) {

        jQuery(mask).height(listHeight-20);
        jQuery(previous).addClass('disabled');

        if (current <= min)
            jQuery(next).addClass('disabled');

        jQuery(next).bind('click', function(){
            var elements;
            var callback;
            if(!isAnimating) {

                isAnimating = true;

                current -= listHeight;
                if (current <= min) {
                    current = min;
                    jQuery(this).addClass('disabled');
                }

                if (current < max) {
                    jQuery(previous).removeClass('disabled');
                }

                callback = function() { 
                    isAnimating = false;
                }

                jQuery(list)
                .animate({'margin-top': current+'px'}, duration, easing, callback);
            }

            return false;

        });

        jQuery(previous).bind('click', function(){

            var elements;
            var callback;

            if(!isAnimating) {

                isAnimating = true;
                current += listHeight;

                if (current >= max) {
                    current = max;
                    jQuery(this).addClass('disabled');  
                }

                if (current > min) {
                    jQuery(next).removeClass('disabled');
                }

                callback = function() { 
                    isAnimating = false;
                }

                jQuery(list)
                .animate({'margin-top': current+'px'}, duration, easing, callback);
            }

            return false;

        });

    }

});

Он отлично работает в Firefox, но не работает в IE7 ... вместо того, чтобы красиво прокручивать, он прокручивает примерно 1/4 расстояния, которое должно, исобытие не отображается последовательно при нажатии кнопки «Далее».

Я подозреваю, что это связано с тем, что я изменил CSS, так как этот код работал раньше ... но я не уверен, гденачать.Я просмотрел каждую переменную с помощью Firequery, и в Firefox, по крайней мере, она дает мне правильные измерения, а такие элементы, как «список», являются элементами HTML, которые я ищу ...

1 Ответ

1 голос
/ 24 марта 2011

Я получил эту работу с некоторой помощью ... оказывается, что одному селектору, который я использовал в моем jQuery, не хватало IE hasLayout, поэтому прокрутка не была реализована правильно.

Вещи, которые работалидля меня:

  • используйте предупреждения Javascript, чтобы увидеть, что вызывается, а что нет
  • попробуйте «позиция: относительная» на селекторе, который, кажется, не работает должным образомв IE7
  • , если ваш селектор не имеет «haveLayout» (должен иметь значение hasLayout: -1 на панели инструментов IE DEV), тогда попробуйте добавить zoom: 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...