【发布时间】:2019-07-26 21:02:32
【问题描述】:
我在三个单独的表(使用 DataTables 构建)旁边有三个加号 (+) 按钮。由于加号是在一个位置(使用 DT)创建的,因此它们被分配了相同的类,单击它们中的任何一个都会打开相同的模式。
我为每个优点动态添加了类以增加特异性。我正在尝试为第一个 + 触发 onClick 事件,但由于某种原因它不起作用。
这是我的问题:为什么我的 onClick 事件没有被触发?我必须添加更多特异性吗?按钮的创建位置有问题吗? (见下面的代码)
按钮创建
loadDataTable(_payload, _grid, _def) {
...
var table = $(_grid).DataTable({
data: _payload,
...
buttons: [
{
text: '<i class="fa fa-plus"></i>',
titleAttr: 'Add',
className: 'dtAddClass btn' + _grid
},
// this creates:
// btn 1: class="btn btn-default dtAddClass btn.rolesgrid"
// btn 2: class="btn btn-default dtAddClass btn.srchgrid"
// btn 3: class="btn btn-default dtAddClass btn.additionalsrchgrid"
// this is exactly what I want
onClick 事件:
$(document).on("click", ".btn.rolesgrid", disp._newRole); // this does not open the modal
$(document).on("click", ".dtAddClass, .btn.rolesgrid", disp._newRole); // this triggers all of the pluses to open modals, which I don't want. I'm guessing it has to do with the .dtAddClass
方法:
_newRole(e) {
dialog.dialog({ title: "Add New Search/Role Filled" });
dialog.dialog("open");
console.log('this is e: ' + e)
}
【问题讨论】:
-
这是什么恶作剧:
class="...dtAddClass?!?这是什么:class="btn.srchgrid"、class="btn.rolesgrid"或...class="btn.additionalsrchgrid"...? -
认为您在
className连接中缺少一个空格。如果您在实际名称中带有点,那就太傻了 -
@zer00ne 只是
btn.srchgrid和btn.additionalsrchgrid还包含 `btn btn-default.我不想把整件事都写出来,所以我只是用...缩短了它们。
标签: javascript jquery events datatables