You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮时,HTMX的hx-trigger from选择器为何未触发请求?

解决HTMX点击按钮触发两个请求的问题

问题原因

HTMX的from:触发器默认监听的是HTMX自定义事件(如htmx:afterRequest这类),而非原生click事件。你直接设置hx-trigger="from: #add-item"时,按钮点击只会触发原生click,不会自动向其他元素广播事件,因此div的请求不会被触发。

可行解决方案

方式1:通过自定义事件实现跨元素触发

修改按钮,在点击时广播自定义事件,让div监听该事件完成请求:

<button id="add-item" 
        hx-get="some-url" 
        hx-trigger="click" 
        hx-target="#item-form" 
        hx-swap="beforeend" 
        type="button"
        hx-on::after-request="htmx.trigger('#add-item', 'custom-add-click')">
  Add item
</button>

<br>
<div hx-get="some-other-url" 
     hx-trigger="custom-add-click from: #add-item" 
     hx-swap="beforeend">
</div>

如果不需要等待第一个请求完成,也可以直接在点击时触发自定义事件:

<button id="add-item" 
        hx-get="some-url" 
        hx-trigger="click" 
        hx-target="#item-form" 
        hx-swap="beforeend" 
        type="button"
        onclick="htmx.trigger(this, 'custom-add-click')">
  Add item
</button>

方式2:在按钮上手动触发第二个请求

直接通过hx-on::click调用HTMX的API发起第二个请求,无需额外div的触发器配置:

<button id="add-item" 
        hx-get="some-url" 
        hx-trigger="click" 
        hx-target="#item-form" 
        hx-swap="beforeend" 
        type="button"
        hx-on::click="htmx.ajax('GET', 'some-other-url', {target: this.nextElementSibling, swap: 'beforeend'})">
  Add item
</button>

<br>
<div>
</div>

原写法无效的核心原因

你尝试的hx-trigger="click from: #add-item"存在逻辑误区:from:的语法是[事件名] from: [选择器],但HTMX不会自动将元素的原生事件广播给其他元素监听,只有自定义事件或HTMX内置事件,才能通过from:实现跨元素触发。

内容的提问来源于stack exchange,提问作者Erik Koinberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:08:39