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

Spring Boot+Thymeleaf场景下用jQuery获取span值失败求助

问题分析与解决方法

你遇到的问题核心在于:<span> 不是表单元素,jQuery的 .val() 方法仅适用于获取表单控件(如 <input>、<select> 等)的value值,对于span标签,即使通过Thymeleaf的 th:value 渲染出了value属性,.val() 也无法正确读取它。

解决思路1:使用自定义data属性(推荐)

HTML规范里,span这类元素并不原生支持value属性,更规范的做法是用data-*自定义属性来存储数据:

修改你的Thymeleaf代码:

<span th:switch="${cost.achitat}" class="pull-right">
    <span th:case='true' class="btn btn-xs btn-default">
        <!-- 用data-cost-id存储ID值 -->
        <span class="glyphicon glyphicon-remove" aria-hidden="true" th:data-cost-id="${cost.cost_id}"></span>
    </span>
    <span th:case='false' class="btn btn-xs btn-default">
        <span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
    </span>
</span>

然后修改jQuery代码,通过.data()方法获取:

$(document).ready(function(){
    $('.glyphicon.glyphicon-remove').click(function(){
        var t = $(this).data('cost-id'); // 对应data-cost-id属性
        alert(t);
    });
});

解决思路2:直接读取value属性(适配现有代码)

如果你不想修改HTML结构,也可以直接通过.attr('value')来获取span上的value属性:

$(document).ready(function(){
    $('.glyphicon.glyphicon-remove').click(function(){
        var t = $(this).attr('value');
        alert(t);
    });
});

额外验证步骤

调试时可以右键页面→查看源代码,确认对应span标签是否已经正确渲染出value或data-cost-id属性,比如应该看到类似:

<span class="glyphicon glyphicon-remove" aria-hidden="true" value="123"></span>

或者

<span class="glyphicon glyphicon-remove" aria-hidden="true" data-cost-id="123"></span>

如果没有渲染出来,再检查Thymeleaf的变量传递(不过你说th:text能正常显示,大概率数据传递是没问题的)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:02:04