右键单击上下文菜单,从(动态)数据表中的一行中检索特定的单元格值



我使用Ajax源数据表https://www.datatables.net/examples/data_sources/ajax.html来显示我的内容。

在它上面我使用了上下文菜单http://medialize.github.io/jQuery-contextMenu/demo.html。但是我已经定制了它,因为我想要它是动态的。

我希望上下文菜单项是根据数据表中ActivityStatus列(第6个col)中的值填充的。为此,我必须检索该列值。

请帮助我在触发上下文菜单时检索值。

    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脚本获取第六列文本:

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
            };
            }
    });

最新更新