右键单击上下文菜单从(动态)数据表中的一行中检索特定的单元格值
On rightclick for contextmenu retrive a particular cell value from a row in (dynamic) datatable
我正在使用 Ajax 源数据表 https://www.datatables.net/examples/data_sources/ajax.html 来显示我的内容..
我在上面使用了上下文菜单http://medialize.github.io/jQuery-contextMenu/demo.html。但是我已经自定义了它,因为我希望它是动态的。
我希望根据数据表中 ActivityStatus 列(第 6 列)中存在的值填充上下文菜单项。为此,我必须检索该列值。
请帮我找回触发上下文菜单时的值。
var contxtM={
"contextMain": [
{
"actstatus": "Draft",
"contextmenu": "edit,delete,submit"
},
{
"actstatus": "Completed",
"contextmenu": "delete"
},
{
"actstatus": "Awaiting",
"contextmenu": "edit,delete,modify"
}
]
};
$('#datatb tbody').contextMenu({
selector: 'tr',
build: function($trigger, e) {
var dynamicContextMenu;
//I want this actSt to be retrived from datatable here
var actSt = "Draft";
var menustr;
for(var i=0;i<contxtM.contextMain.length;i++){
if(actSt==contxtM.contextMain[i].actstatus){
menustr =contxtM.contextMain[i].contextmenu;
}
}
/* alert(menustr); */
var menu= menustr.split(",");
var arrayitems= new Array();
$.each( menu, function( i, val ) {
arrayitems.push("'"+val+"': {name: '"+val+" Activity'}");
});
dynamicContextMenu="{"+arrayitems.join()+"}";
var json = JSON.stringify(eval("(" + dynamicContextMenu + ")"));
var dynamicContextMenu = jQuery.parseJSON(json);
return {
callback: function(key, options) {
alert(key+" "+$(this).text());
},
items: dynamicContextMenu
};
}
});
我尝试使用以下代码进行检索。但它在代码的上下文菜单部分不起作用。
$('#datatb tbody tr',this).eq(6).text()
但是当我通过简单的点击使用它时它确实有效。
$('#datatb tbody').on('click', 'tr', function () {
alert($('td',this).eq(6).text());
});
请帮我找回触发上下文菜单时的值。
首先“eq() 以 0 开头”
所以你需要传递n-1来访问第n个元素。
使用以下 jquery 脚本获取第 6 列文本:
var currentTr = e.currentTarget;
var actSt = $(currentTr).find('td:eq(5)').text();
您的代码将如下所示:
var contxtM={
"contextMain": [
{
"actstatus": "Draft",
"contextmenu": "edit,delete,submit"
},
{
"actstatus": "Completed",
"contextmenu": "delete"
},
{
"actstatus": "Awaiting",
"contextmenu": "edit,delete,modify"
}
]
};
$('#datatb tbody').contextMenu({
selector: 'tr',
build: function($trigger, e) {
var dynamicContextMenu;
//I want this actSt to be retrived from datatable here
var currentTr = e.currentTarget;
var actSt = $(currentTr).find('td:eq(5)').text();
//var actSt = "Draft";
var menustr;
for(var i=0;i<contxtM.contextMain.length;i++){
if(actSt==contxtM.contextMain[i].actstatus){
menustr =contxtM.contextMain[i].contextmenu;
}
}
/* alert(menustr); */
var menu= menustr.split(",");
var arrayitems= new Array();
$.each( menu, function( i, val ) {
arrayitems.push("'"+val+"': {name: '"+val+" Activity'}");
});
dynamicContextMenu="{"+arrayitems.join()+"}";
var json = JSON.stringify(eval("(" + dynamicContextMenu + ")"));
var dynamicContextMenu = jQuery.parseJSON(json);
return {
callback: function(key, options) {
alert(key+" "+$(this).text());
},
items: dynamicContextMenu
};
}
});
我正在使用 Ajax 源数据表 https://www.datatables.net/examples/data_sources/ajax.html 来显示我的内容..
我在上面使用了上下文菜单http://medialize.github.io/jQuery-contextMenu/demo.html。但是我已经自定义了它,因为我希望它是动态的。
我希望根据数据表中 ActivityStatus 列(第 6 列)中存在的值填充上下文菜单项。为此,我必须检索该列值。
请帮我找回触发上下文菜单时的值。
var contxtM={
"contextMain": [
{
"actstatus": "Draft",
"contextmenu": "edit,delete,submit"
},
{
"actstatus": "Completed",
"contextmenu": "delete"
},
{
"actstatus": "Awaiting",
"contextmenu": "edit,delete,modify"
}
]
};
$('#datatb tbody').contextMenu({
selector: 'tr',
build: function($trigger, e) {
var dynamicContextMenu;
//I want this actSt to be retrived from datatable here
var actSt = "Draft";
var menustr;
for(var i=0;i<contxtM.contextMain.length;i++){
if(actSt==contxtM.contextMain[i].actstatus){
menustr =contxtM.contextMain[i].contextmenu;
}
}
/* alert(menustr); */
var menu= menustr.split(",");
var arrayitems= new Array();
$.each( menu, function( i, val ) {
arrayitems.push("'"+val+"': {name: '"+val+" Activity'}");
});
dynamicContextMenu="{"+arrayitems.join()+"}";
var json = JSON.stringify(eval("(" + dynamicContextMenu + ")"));
var dynamicContextMenu = jQuery.parseJSON(json);
return {
callback: function(key, options) {
alert(key+" "+$(this).text());
},
items: dynamicContextMenu
};
}
});
我尝试使用以下代码进行检索。但它在代码的上下文菜单部分不起作用。
$('#datatb tbody tr',this).eq(6).text()
但是当我通过简单的点击使用它时它确实有效。
$('#datatb tbody').on('click', 'tr', function () {
alert($('td',this).eq(6).text());
});
请帮我找回触发上下文菜单时的值。
首先“eq() 以 0 开头”
所以你需要传递n-1来访问第n个元素。
使用以下 jquery 脚本获取第 6 列文本:
var currentTr = e.currentTarget;
var actSt = $(currentTr).find('td:eq(5)').text();
您的代码将如下所示:
var contxtM={
"contextMain": [
{
"actstatus": "Draft",
"contextmenu": "edit,delete,submit"
},
{
"actstatus": "Completed",
"contextmenu": "delete"
},
{
"actstatus": "Awaiting",
"contextmenu": "edit,delete,modify"
}
]
};
$('#datatb tbody').contextMenu({
selector: 'tr',
build: function($trigger, e) {
var dynamicContextMenu;
//I want this actSt to be retrived from datatable here
var currentTr = e.currentTarget;
var actSt = $(currentTr).find('td:eq(5)').text();
//var actSt = "Draft";
var menustr;
for(var i=0;i<contxtM.contextMain.length;i++){
if(actSt==contxtM.contextMain[i].actstatus){
menustr =contxtM.contextMain[i].contextmenu;
}
}
/* alert(menustr); */
var menu= menustr.split(",");
var arrayitems= new Array();
$.each( menu, function( i, val ) {
arrayitems.push("'"+val+"': {name: '"+val+" Activity'}");
});
dynamicContextMenu="{"+arrayitems.join()+"}";
var json = JSON.stringify(eval("(" + dynamicContextMenu + ")"));
var dynamicContextMenu = jQuery.parseJSON(json);
return {
callback: function(key, options) {
alert(key+" "+$(this).text());
},
items: dynamicContextMenu
};
}
});