diff --git a/src/jqLite.js b/src/jqLite.js index cf63c5df5952..7677d59e9ee0 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -171,7 +171,10 @@ function JQLite(element) { } function JQLiteClone(element) { - return element.cloneNode(true); + var clone = element.cloneNode(true); + clone.originalNode = element + clone.isClone = true + return clone } function JQLiteDealoc(element){ @@ -310,6 +313,9 @@ function JQLiteInheritedData(element, name, value) { while (element.length) { if (value = element.data(name)) return value; + if (element[0].isClone) { + if (value = jqLite(element[0].originalNode).inheritedData(name)) return value + } element = element.parent(); } } diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index b1fa6b058207..fb5c34e7f608 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -123,6 +123,14 @@ describe('jqLite', function() { dealoc(doc); } ); + + it('should find data on originalNode if a clone', function() { + var element = jqLite('foo'); + element.data('myData', 'abc'); + var clone = element.clone() + expect(clone.inheritedData('myData')).toBe('abc'); + dealoc(element); + }) });