diff --git a/src/htmx.js b/src/htmx.js index 88f88eb1..11469d4d 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -3102,6 +3102,7 @@ return (function () { serverResponse = beforeSwapDetails.serverResponse; // allow updating content isError = beforeSwapDetails.isError; // allow updating error + responseInfo.target = target; // Make updated target available to response events responseInfo.failed = isError; // Make failed property available to response events responseInfo.successful = !isError; // Make successful property available to response events diff --git a/test/core/events.js b/test/core/events.js index 7d09a846..5db2e0a0 100644 --- a/test/core/events.js +++ b/test/core/events.js @@ -628,4 +628,30 @@ describe("Core htmx Events", function() { } }); + it("has updated target available when target set via htmx:beforeSwap", function () { + + var targetWasUpdatedInAfterSwapHandler = false; + + var beforeSwapHandler = htmx.on("htmx:beforeSwap", function (evt) { + console.log("beforeSwap", evt.detail.target, byId('d2')); + evt.detail.target = byId('d2'); + }); + var afterSwapHandler = htmx.on("htmx:afterSwap", function (evt) { + console.log("afterSwap", evt.detail.target, byId('d2')); + targetWasUpdatedInAfterSwapHandler = evt.detail.target === byId('d2'); + }); + + try { + this.server.respondWith("GET", "/test", "updated"); + make("
"); + var div = byId('d0'); + div.click(); + this.server.respond(); + targetWasUpdatedInAfterSwapHandler.should.equal(true); + } finally { + htmx.off("htmx:beforeSwap", beforeSwapHandler); + htmx.off("htmx:afterSwap", afterSwapHandler); + } + }); + });