From 89c03de0f095f7412150c91987a0759f8a577779 Mon Sep 17 00:00:00 2001 From: Felix Gnass Date: Mon, 17 Oct 2011 19:16:14 +0200 Subject: [PATCH] Fix: Support insertion of CharacterData nodes The original test for arrays yields false positives, since CharacterData elements also have a length property. Hence $('body').append(document.createTextNode('foo')) throws a TypeError. --- src/zepto.js | 2 +- test/zepto.html | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/zepto.js b/src/zepto.js index fbe4154e6..82870c8c7 100644 --- a/src/zepto.js +++ b/src/zepto.js @@ -436,7 +436,7 @@ var Zepto = (function() { adjacencyOperators.forEach(function(key, operator) { $.fn[key] = function(html){ var nodes = isO(html) ? html : fragment(html); - if (!('length' in nodes)) nodes = [nodes]; + if (!('length' in nodes) || nodes.nodeType) nodes = [nodes]; if (nodes.length < 1) return this; var size = this.length, copyByClone = size > 1, inReverse = operator < 2; diff --git a/test/zepto.html b/test/zepto.html index e2ef2bd4c..28b26d472 100644 --- a/test/zepto.html +++ b/test/zepto.html @@ -1114,6 +1114,20 @@

Zepto DOM unit tests

t.assertEqual('before
prependappend
after', $('#beforeafter_container').html()); + //testing with TextNode as parameter + $('#beforeafter_container').html('
'); + + function text(contents){ + return document.createTextNode(contents); + } + + $('#beforeafter').append(text('append')); + $('#beforeafter').prepend(text('prepend')); + $('#beforeafter').before(text('before')); + $('#beforeafter').after(text('after')); + + t.assertEqual('before
prependappend
after', $('#beforeafter_container').html()); + $('#beforeafter_container').html('
'); function div(contents){