table中点击按钮弹出模态框,获取table中点击的按钮所在行的数据

本文介绍如何在使用Bootstrap制作的HTML5页面中,通过模态框进行数据操作。重点讲解了如何在模态框打开时,从表格中获取特定行的数据ID,以便向服务器传递参数。

最近在弄bootstrap做前端html5页面,其中有用到表格。
表格中有一列数据是按钮增删数据的操作,需要弹出bootstrap的模态框用来操作。
操作的逻辑是向服务端传递id值,所以就需要去获取该行数据id一列的值。
所以就有这个问题,就是再弹出模态框后,获取点击弹出模态框按钮所在的数据。

可以看下table,需要通过点击操作栏,获取到序号列传给服务器操作。
在这里插入图片描述
模态框代码

    <!-- 模态框(Modal) -->
    <div class="modal fade" id="myModalRefuse" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h5 class="modal-title" id="myModalLabel">拒绝申请</h5>
                </div>
                <div class="modal-body">
                    请输入拒绝申请的原因<span style="color:red">*</span><br>
                    <textarea name="refuseTextareaContext" rows="10" cols="30"></textarea>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">
                        关闭
                    </button>
                    <button type="button" id="btnRefuseSave" class="btn btn-primary" data-dismiss="modal">
                        保存
                    </button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
    </div><!-- /.modal -->

table tbody是在js中写的,就不贴了。

主要看js中的操作:

$('#myModalRefuse').on('show.bs.modal', function (event) {
            $("textarea[name = refuseTextareaContext]").innerHTML = "";
            var btnThis = $(event.relatedTarget); //触发事件的按钮
            var modal = $(this);  //当前模态框
            var modalId = btnThis.data('id');   //解析出data-id的内容
            currentDataId = btnThis.closest('tr').find('td').eq(1).text();//获取某一列的内容eq后面表示列数
            ///alert("show.bs.modal  modalId = " + modalId + ", currentDataId = " + currentDataId);
        });

myModalRefuse表示模态框的id,on是模态框将要显示前的监听事件。
var btnThis = $(event.relatedTarget);这一行就是获取点击出现这个模态框的那个按钮。
btnThis.closest(‘tr’).find(‘td’).eq(1).text(); 获取按钮所在行tr再去找列td,eq表示是第几列,然后获取到text内容。
这样就接触了这个问题了。

### 实现单元格内按钮点击事件的方法 在 `advance-table` 中实现单元格内的按钮点击事件,通常需要结合前端框架(如 jQuery、Vue.js 或 React)来完成。具体实现方式是在表格列的渲染函数中插入 HTML 按钮,并绑定对应的点击事件处理函数。 例如,在使用类似 `initTable` 的手写表格插件时,可以通过 `render` 函数向指定列中插入按钮元素,并为其绑定点击事件: ```javascript { display: '操作', name: 'action', width: 100, render: function(item) { return '<button class="btn btn-primary btn-sm" onclick="handleButtonClick(\'' + item.id + '\')">详情</button>'; } } ``` 上述代码片段中的 `handleButtonClick` 是一个自定义的 JavaScript 函数,用于处理按钮点击后的逻辑操作,例如弹出模态框或跳转页面等。通过这种方式可以实现每个单元格内按钮的独立为[^4]。 如果使用的是基于 Vue.js 的组件库,则可以在表格列配置中使用 `scoped` 样式和 `methods` 来绑定点击事件: ```html <template> <advance-table :columns="columns" :data="tableData"></advance-table> </template> <script> export default { data() { return { columns: [ { title: '操作', key: 'action', render: (h, params) => { return h('button', { style: { marginLeft: '10px' }, on: { click: () => { this.handleRowClick(params.row); } } }, '查看详情'); } } ], tableData: [/* 数据源 */] }; }, methods: { handleRowClick(row) { // 处理点击事件 } } }; </script> ``` 在 Vue 环境下,`render` 函数允许开发者灵活地控制每一列的内容展示与交互为,同时确保组件化开发模式下的数据流清晰可控[^5]。 对于纯原生 JavaScript 或 jQuery 插件实现的 `advance-table`,也可以通过动态生成带有唯一标识符的按钮并监听其点击事件来实现类似功能。关键在于确保事件监听器能够正确附加到动态生成的 DOM 元素上,通常采用委托机制或在每次数据加载后重新绑定事件。 总之,无论采用哪种技术栈,核心思路都是在表格渲染阶段将可交互的按钮插入到目标单元格中,并为每个按钮绑定特定的点击处理逻辑。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值