我正在使用Ajax源数据https://www.datatables.net/examples/data_sources/ajax.html来显示我的内容..
在上面我使用了上下文菜单http://medialize.github.io/jQuery-contextMenu/demo.html。但我已经定制了它,因为我希望它是动态的。
我希望根据数据表中ActivityStatus列(第6列)中的值来填充contextmenu项。为此,我必须检索该列值。
请在触发上下文菜单时帮助我检索值。
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());
});
请在触发上下文菜单时帮助我检索值。
答案 0 :(得分:1)
首先&#34; eq()以0&#34;开头
所以你需要传递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
};
}
});