diff --git a/tests/unit/sortable/sortable_methods.js b/tests/unit/sortable/sortable_methods.js
index f3fe240e701..9c0a86a359b 100644
--- a/tests/unit/sortable/sortable_methods.js
+++ b/tests/unit/sortable/sortable_methods.js
@@ -90,4 +90,39 @@ test( "disable", function() {
equal( chainable, element, "disable is chainable" );
});
+test( "refresh() should update the positions of initially empty lists (see #7498)", function() {
+ expect( 1 );
+
+ var changeCount = 0,
+ element = $( "#qunit-fixture" ).html( "
" ).find( "ul" );
+
+ element
+ .css({
+ "float": "left",
+ width: "100px"
+ })
+ .sortable({
+ change: function() {
+ changeCount++;
+ }
+ })
+ .append( "aa" )
+ .find( "li" )
+ .css({
+ "float": "left",
+ width: "50px",
+ height: "50px"
+ });
+
+ element.sortable( "refresh" );
+
+ // Switch the order of the two li elements
+ element.find( "li" ).eq( 0 ).simulate( "drag", {
+ dx: 55,
+ moves: 15
+ });
+
+ equal( changeCount, 1 );
+});
+
})(jQuery);
diff --git a/ui/sortable.js b/ui/sortable.js
index 0207c86206d..913949c20c6 100644
--- a/ui/sortable.js
+++ b/ui/sortable.js
@@ -77,17 +77,12 @@ return $.widget("ui.sortable", $.ui.mouse, {
},
_create: function() {
-
- var o = this.options;
this.containerCache = {};
this.element.addClass("ui-sortable");
//Get the items
this.refresh();
- //Let's determine if the items are being displayed horizontally
- this.floating = this.items.length ? o.axis === "x" || this._isFloating(this.items[0].item) : false;
-
//Let's determine the parent's offset
this.offset = this.element.offset();
@@ -731,6 +726,11 @@ return $.widget("ui.sortable", $.ui.mouse, {
refreshPositions: function(fast) {
+ // Determine whether items are being displayed horizontally
+ this.floating = this.items.length ?
+ this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
+ false;
+
//This has to be redone because due to the item being moved out/into the offsetParent, the offsetParent's position will change
if(this.offsetParent && this.helper) {
this.offset.parent = this._getParentOffset();