do not trigger after swap events and logic on element that has been removed by outerHTML swap

This commit is contained in:
carson
2021-01-23 15:50:28 -07:00
parent 16a055cdc6
commit 445e6e2b4d
2 changed files with 17 additions and 0 deletions

View File

@@ -551,6 +551,7 @@ return (function () {
var newElt = eltBeforeNewContent.nextSibling;
}
getInternalData(target).replacedWith = newElt; // tuck away so we can fire events on it later
settleInfo.elts = [] // clear existing elements
while(newElt && newElt !== target) {
if (newElt.nodeType === Node.ELEMENT_NODE) {
settleInfo.elts.push(newElt);

View File

@@ -271,4 +271,20 @@ describe("hx-swap attribute", function(){
div.innerHTML.should.equal('Foo');
});
it('swap outerHTML does not trigger htmx:afterSwap on original element', function()
{
this.server.respondWith("GET", "/test", 'Clicked!');
var div = make('<div id="d1" hx-get="/test" hx-swap="outerHTML"></div>')
div.addEventListener("htmx:afterSwap", function(){
count++;
})
div.click();
var count = 0;
should.equal(byId("d1"), div);
this.server.respond();
should.equal(byId("d1"), null);
count.should.equal(0);
});
})