HTMX方式
重新启动按钮可以重新加载整个<div class="game"..>
.例如,我定义了返回游戏字段的/new-game
端点:
<div class="game" hx-post="/tick" hx-trigger="every 1s, keydown[ (some keys here) ] from:body">
</div>
重启按钮看起来像:
<button hx-get="/new-game" hx-trigger="click" hx-target=".game" hx-swap="outerHTML">Restart</button>
由于我们使用的是hx-swap="outerHTML"
,它将替换整个元素,HTMX将从头开始处理它.
纯JavaScript
您还可以通过重新创建div.game
并调用htmx.process('.game')
来设置它,从而对纯JavaScript执行相同的操作.
仅仅在已处理的元素上调用htmx.process
是不起作用的.因此,您必须创建一个新的,作为一个简单的选项,您可以利用node.cloneNode()个API.
function restartGame() {
const game = htmx.find('.game');
const clone = game.cloneNode();
game.parentNode.insertBefore(clone, game);
htmx.remove(game);
htmx.process('.game');
}
<button onclick="restartGame()">Restart</button>