diff --git a/src/htmx.js b/src/htmx.js index d1cb4989..a7ded6f8 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -702,8 +702,8 @@ return (function () { var fragment = makeFragment(responseText); if (fragment) { handleOutOfBandSwaps(fragment, settleInfo); - handlePreservedElements(fragment); fragment = maybeSelectFromResponse(elt, fragment); + handlePreservedElements(fragment); return swap(swapStyle, elt, target, fragment, settleInfo); } } diff --git a/test/attributes/hx-preserve.js b/test/attributes/hx-preserve.js index 08521bc0..1e1c2368 100644 --- a/test/attributes/hx-preserve.js +++ b/test/attributes/hx-preserve.js @@ -26,5 +26,14 @@ describe("hx-preserve attribute", function () { byId("d2").innerHTML.should.equal("New Content"); }) + it('preserved element should not be swapped if it lies outside of hx-select', function () { + this.server.respondWith("GET", "/test", "
New Content
New Content
"); + var div = make("
Old Content
Old Content
"); + div.click(); + this.server.respond(); + byId("d1").innerHTML.should.equal("Old Content"); + byId("d2").innerHTML.should.equal("New Content"); + }) + });