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

点击指定类名盒子获取对应桌号/ID的技术实现咨询

解决点击桌号盒子获取对应桌号的问题

你的问题出在选中了所有桌号元素,$('.table').find('h2').text()会把页面上所有.table下的h2文本拼接起来返回,自然会得到一串连续的数字。要实现点击单个盒子获取对应桌号,核心是只获取当前点击盒子内的桌号,下面给你几种实用的方案:

方案1:利用DOM查找当前盒子内的桌号

直接给.my-button绑定点击事件,在事件回调里通过$(this)(代表当前点击的盒子)去查找内部的桌号元素:

$('.my-button').click(function() {
    // 从当前盒子里找到h2的文本
    const tableNumber = $(this).find('.table h2').text();
    console.log('当前点击的桌号:', tableNumber);
});

如果你想直接用你给.table设置的id(正好是桌号),也可以这样:

$('.my-button').click(function() {
    const tableId = $(this).find('.table').attr('id');
    console.log('当前点击的桌号ID:', tableId);
});

方案2:用自定义data属性(推荐)

在Laravel生成HTML时,给.my-button添加一个自定义的data-*属性,把桌号直接存在元素上,这样JS里不用DOM查找就能拿到值,更高效:

修改你的Laravel循环代码:

@foreach($tables as $t) 
    @if($t->section_id == $s->section_id) 
        <!-- 给盒子添加data-table-number属性,存桌号 -->
        <div class="col-xl-3 bg-success px-6 py-8 rounded-xl mr-7 mb-7 my-button" data-table-number="{{ $t['table_number'] }}">
            <div class="text-inverse-succeess font-weight-bolder font-size-h2 mt-3 table" id="{{ $t['table_number']}}">
                <h2>{{ $t['table_number']}}</h2>
            </div>
            <a href="#" class="text-inverse-success font-weight-bold font-size-lg mt-1">New Products</a>
        </div>
    @endif 
@endforeach

然后JS里直接读取这个属性:

$('.my-button').click(function() {
    const tableNumber = $(this).data('table-number');
    console.log('当前点击的桌号:', tableNumber);
});

方案3:动态生成元素的事件委托(如果需要)

如果这些桌号盒子是动态加载的(比如通过AJAX新增),上面的直接绑定事件会失效,这时候要用事件委托,把事件绑定到父容器(或者document)上:

// 假设父容器是#table-container,没有的话用document也可以
$('#table-container').on('click', '.my-button', function() {
    const tableNumber = $(this).data('table-number');
    console.log('当前点击的桌号:', tableNumber);
});

这样不管后续新增多少个.my-button,点击事件都能正常触发。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:47:31