Skip to content
Permalink
Browse files

Use parseFloat instead of parseInt to read CSS values.

This fixes #7730 and #7885.
  • Loading branch information
inukshuk committed Jan 15, 2011
1 parent d9cb698 commit 75655e5758bc786989f26a98b09aabbfb88f66fd
Showing with 31 additions and 3 deletions.
  1. +5 −3 src/offset.js
  2. +26 −0 test/unit/offset.js
@@ -187,11 +187,13 @@ jQuery.offset = {
// need to be able to calculate position if either top or left is auto and position is absolute
if ( calculatePosition ) {
curPosition = curElem.position();
curTop = curPosition.top;
curLeft = curPosition.left;
} else {
curTop = parseFloat( curCSSTop ) || 0;
curLeft = parseFloat( curCSSLeft ) || 0;
}

curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;

if ( jQuery.isFunction( options ) ) {
options = options.call( elem, i, curOffset );
}
@@ -422,6 +422,32 @@ test("offsetParent", function(){
equals( div[1], jQuery("#nothiddendiv")[0], "The div is the offsetParent." );
});

test("fractions (see #7730 and #7885)", function() {
expect(2);

jQuery('body').append('<div id="fractions"/>');

var expected = { top: 1000, left: 1000 };
var div = jQuery('#fractions');

div.css({
position: 'absolute',
left: '1000.7432222px',
top: '1000.532325px',
width: 100,
height: 100
});

div.offset(expected);

var result = div.offset();

equals( result.top, expected.top, "Check top" );
equals( result.left, expected.left, "Check left" );

div.remove();
});

function testoffset(name, fn) {

test(name, function() {

0 comments on commit 75655e5

Please sign in to comment.
You can’t perform that action at this time.