jQuery 下一个/上一个按钮在 IE7 中不能正常工作

标签 jquery css dom

我有以下 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 元素...

最佳答案

我确实在一些帮助下完成了这项工作...事实证明我在我的 jQuery 中使用的一个选择器缺少 IE 的“hasLayout”,所以滚动没有被正确实现。

对我有用的东西:

  • 使用 Javascript 警报来查看正在调用的内容和未调用的内容
  • 尝试在 IE7 中似乎无法正常工作的选择器上使用“position: relative”
  • 如果您的选择器没有“haveLayout”(应在 IE DEV 工具栏中读取 hasLayout: -1),则尝试添加 zoom: 1

关于jQuery 下一个/上一个按钮在 IE7 中不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5398243/

相关文章:

javascript - 如何将字符串转换为日期对象?

javascript - 禁用 'Next' 或 'Previous' 按钮?

html - 循环复制内容

javascript - 在jquery上,如何手动将图像src定义为html <img> 标签

html - 复合组件和 CSS

javascript - 检查元素如何获得焦点

javascript - 使用 JavaScript 将 HTML 内容附加到 div 的最快方法

javascript - 需要使用 Jquery 将 DOM 中的相同元素复制 4 次

javascript - 将 img.src 设置为 dataUrl 会泄漏内存

javascript - jQuery UI - 在移动事件或恢复完成后调用函数