diff options
author | carson <carson@leaddyno.com> | 2020-06-16 19:20:23 -0700 |
---|---|---|
committer | carson <carson@leaddyno.com> | 2020-06-16 19:20:23 -0700 |
commit | 19b933449b1af4d4589bee24ae201dbe0c8d374f (patch) | |
tree | 887fac6f3cc417215427a08b90271b35a3fa6f73 | |
parent | efd3ab85f0f921bca1fde539af65216df7657386 (diff) | |
download | htmx-19b933449b1af4d4589bee24ae201dbe0c8d374f.tar.gz htmx-19b933449b1af4d4589bee24ae201dbe0c8d374f.zip |
catch empty IDs in attribute swap, fixes https://github.com/bigskysoftware/htmx/issues/101
-rw-r--r-- | src/htmx.js | 16 | ||||
-rw-r--r-- | test/core/regressions.js | 10 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/htmx.js b/src/htmx.js index 759c9edc..22cfb1e4 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -379,13 +379,15 @@ return (function () { function handleAttributes(parentNode, fragment, settleInfo) { forEach(fragment.querySelectorAll("[id]"), function (newNode) { - var oldNode = parentNode.querySelector(newNode.tagName + "[id=" + newNode.id + "]") - if (oldNode && oldNode !== parentNode) { - var newAttributes = newNode.cloneNode(); - cloneAttributes(newNode, oldNode); - settleInfo.tasks.push(function () { - cloneAttributes(newNode, newAttributes); - }); + if (newNode.id && newNode.id.length > 0) { + var oldNode = parentNode.querySelector(newNode.tagName + "[id=" + newNode.id + "]"); + if (oldNode && oldNode !== parentNode) { + var newAttributes = newNode.cloneNode(); + cloneAttributes(newNode, oldNode); + settleInfo.tasks.push(function () { + cloneAttributes(newNode, newAttributes); + }); + } } }); } diff --git a/test/core/regressions.js b/test/core/regressions.js index ccb3d240..a3108fdb 100644 --- a/test/core/regressions.js +++ b/test/core/regressions.js @@ -49,7 +49,7 @@ describe("Core htmx Regression Tests", function(){ form.innerHTML.should.equal("variable=") }); - it ('name=id doesnt cause an error, function()', function(){ + it ('name=id doesnt cause an error', function(){ this.server.respondWith("GET", "/test", "Foo<form><input name=\"id\"/></form>") var div = make('<div hx-get="/test">Get It</div>') div.click(); @@ -57,4 +57,12 @@ describe("Core htmx Regression Tests", function(){ div.innerText.should.equal("Foo") }); + it ('empty id doesnt cause an error', function(){ + this.server.respondWith("GET", "/test", "Foo<div id=''></div>") + var div = make('<div hx-get="/test">Get It</div>') + div.click(); + this.server.respond(); + div.innerText.should.equal("Foo") + }); + }) |