Jquery 单击相应按钮时在datatables中获取ID
我正在使用Datatables和Jquery构建我的应用程序。我正在从服务器将数据提取到表中。该表有3列,每列表示委托ID、委托名称和一个按钮“Add”。我想检索所单击的相应添加按钮的ConsistingIDJquery 单击相应按钮时在datatables中获取ID,jquery,datatables,Jquery,Datatables,我正在使用Datatables和Jquery构建我的应用程序。我正在从服务器将数据提取到表中。该表有3列,每列表示委托ID、委托名称和一个按钮“Add”。我想检索所单击的相应添加按钮的ConsistingID var oTable = $('#viewAllConsignments').DataTable( { "aaSorting": [ ], // Prevent initial sorting "sAjaxSource": "
var oTable = $('#viewAllConsignments').DataTable( {
"aaSorting": [ ], // Prevent initial sorting
"sAjaxSource": "getConsignment",
"sAjaxDataProp": "",
"sServerMethod" : "POST",
"bProcessing": true,
"aoColumns": [
{ "mData": "consignment.consignmentId"},
{ "mData": "consignment.consignmentName" },
{ "mData": "consignment.consignmentId",
"bSortable": false,
"mRender": function(data, type, full) {
return '<button type="button" id="btn-packets" class="btn btn-success btn-packets">Add</button>';
}
}
]
});
var-oTable=$(“#查看所有委托”)。数据表({
“aaSorting”:[],//防止初始排序
“sAjaxSource”:“Get寄售”,
“sAjaxDataProp”:“,
“sServerMethod”:“POST”,
“bProcessing”:正确,
“aoColumns”:[
{“mData”:“寄售.寄售ID”},
{“mData”:“寄售.寄售名称”},
{“mData”:“寄售.寄售ID”,
“可移植”:错误,
“mRender”:功能(数据、类型、完整){
返回“添加”;
}
}
]
});
尝试这样做:将数据属性添加到添加按钮。
对于构建数据时的每一行,将
数据委托ID=“数据库值”
添加到您的按钮,并在按钮上单击执行此操作:$(this).data(委托ID)//所需id
永远不要使用重复的id
的-id=“btn packets”
-您可以使用.btn packets
类
为什么不将寄售。寄售ID
(=数据
)存储为按钮本身的数据属性
...
mRender: function(data, type, full) {
return '<button data-consignmentId="'+data+'" class="btn btn-success btn-packets">Add</button>';
}
...
也可以使用良好的旧
attr()
:
return '<button consignmentId="'+data+'" class="btn btn-success btn-packets">Add</button>';
alert($(this).attr('consignmentId'));
请注意,我已经交换了'
和“
stringify
使用”
返回字符串
现在,data('row')
在单击处理程序中保存您可以立即访问的整个对象。即使数据作为字符串插入,它也将返回有效的JSON:
alert($(this).data('row').consignment.consignmentName);
如果我们可以在没有
stringify()
的情况下分配数据,那么就更容易了data()
意味着能够保存对象,但类似于$(结果)。数据('row',full)
将不起作用,因为呈现按钮在从mRender
返回时不是DOM的一部分,它只是一个普通字符串 对于构建数据时的每一行,将数据委托ID=“database value”添加到您的按钮,并在按钮上单击“执行此操作”:嘿,我尝试执行此操作,但始终在警报框中显示“未定义”。我检查了每个按钮,并将数据委托ID设置为相应的委托。委托ID。但警报框仍显示未定义:-(@vkm-oh yes,jQuery在内部将数据attr小写,请尝试alert($(this).data('commissionId'))
制作了这个小示例->来演示这个问题。一个“有效的”HTML5数据属性将是数据寄售id
,但这将更加令人困惑。我认为jQuery这样做相当烦人。如果您根本无法使用attr
,请使用寄售id=“”+data+”
和警报($(this).attr('寄售id'))
-我建议数据属性只是为了兼容HTML5,但谁真正在乎呢:)该死!我一个人可能永远也想不到。非常感谢你!工作很有魅力。嘿,大卫,再问我一个问题。如果我想在按钮点击时传递多个数据,比如委托名称和委托ID,该怎么办?嘿,我试过这么做,但我总是在警报框中得到“未定义”的信息。
return "<button data-row='"+JSON.stringify(full)+"' class='btn btn-success btn-packets'>Add</button>";
alert($(this).data('row').consignment.consignmentName);