jQuery position()。left,offsetLeft在chrome和firefox中返回非常不同的值

时间:2012-03-26 14:24:30

标签: jquery

为简单起见而更新: http://jsfiddle.net/vJVcf/5/

///

http://jsfiddle.net/kE6TR/

(悬停在段落上时会发生动画)

我不知道是什么导致这种情况,但我已将差异缩小到位置()。左;值 - 由于某些原因,webkit和firefox完全不同地解释它。

var $plugin = jQuery.sub();
$plugin.fn.animate = function(props, speed, cb) {



    if (typeof(speed) == "function") cb = speed, speed = 500;
    if (typeof(cb) != "function") cb = function() {};
    return $.each(this, function(i, el) {
        el = $(el);

        if (props.float && props.float != el.css("float")) {
            var elem = el.clone().insertBefore(el).addClass('killme'),
            temp = el.position().left;
            el.css('position', 'absolute');
            props.marginLeft = 0;
            props.left = 0;

            el.css({
                marginLeft: temp
            });
        }
        $(this).animate(props, speed, function() {
            $(this).css(props);
            cb();
            el.css({
                marginLeft: -100,
                position: "relative",
                display: "block",
                clear: "both"
            });
        });
    });
};

1 个答案:

答案 0 :(得分:0)

我想我得到你想要的东西,但你的jQuery看起来不必要地复杂......用这个代替它怎么样? (例如http://jsfiddle.net/tcloninger/uGNzA/

$(document).ready( function(){

    $('.eula_animate').each( function(){
        $(this)
            .clone()
            .prependTo(this)
            .addClass('move_me')
            .css({'left': $(this).offset().left });
    });

    $('p').hover( function(){
        $('.move_me').show().animate({'left':20},2000);
    });

});

...哦是的,并添加这个CSS:.move_me{ display:none; position:absolute; color:red; }