diff --git a/CHANGELOG.md b/CHANGELOG.md
index 25bffca4..5acb5832 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,10 @@
# 0.9.17 vegetable-reanimation (in progress) #
+### New Features
+- Added prepend() to jqLite
+
+
### Bug Fixes
- Number filter would return incorrect value when fractional part had leading zeros.
diff --git a/src/jqLite.js b/src/jqLite.js
index 68cda632..a1203739 100644
--- a/src/jqLite.js
+++ b/src/jqLite.js
@@ -408,6 +408,20 @@ forEach({
});
},
+ prepend: function(element, node) {
+ if (element.nodeType === 1) {
+ var index = element.firstChild;
+ forEach(new JQLite(node), function(child){
+ if (index) {
+ element.insertBefore(child, index);
+ } else {
+ element.appendChild(child);
+ index = child;
+ }
+ });
+ }
+ },
+
remove: function(element) {
JQLiteDealoc(element);
var parent = element.parentNode;
diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js
index 5aec0cff..6794c4e0 100644
--- a/test/jqLiteSpec.js
+++ b/test/jqLiteSpec.js
@@ -380,6 +380,24 @@ describe('jqLite', function(){
});
});
+ describe('prepend', function(){
+ it('should prepend to empty', function(){
+ var root = jqLite('
');
+ expect(root.prepend('
abc')).toEqual(root);
+ expect(root.html().toLowerCase()).toEqual('
abc');
+ });
+ it('should prepend to content', function(){
+ var root = jqLite('
text
');
+ expect(root.prepend('
abc')).toEqual(root);
+ expect(root.html().toLowerCase()).toEqual('
abctext');
+ });
+ it('should prepend text to content', function(){
+ var root = jqLite('
text
');
+ expect(root.prepend('abc')).toEqual(root);
+ expect(root.html().toLowerCase()).toEqual('abctext');
+ });
+ });
+
describe('remove', function(){
it('should remove', function(){