如何在右键单击行时显示编辑和删除数据表上的按钮?

时间:2017-04-01 19:43:33

标签: jquery ajax datatables contextmenu right-click

可能我会为这个问题得到投票但是。在这里。

我正在使用datatables。是否可以在示例here上显示右键单击的工作编辑和删除按钮?我不擅长jquery。如果有人可以发送样品,我将不胜感激。我发现的唯一工作示例是this。但这不是我想要实现的目标。

点击事件的示例:https://datatables.net/examples/advanced_init/events_live.html

2 个答案:

答案 0 :(得分:2)

以下是您第一个示例中使用的javascript的修改:

$(document).ready( function () {
  var oTable = $('#example').dataTable({
    "bJQueryUI": true,
    "sDom": 'l<"H"Rf>t<"F"ip>'
  });
  $(document).contextmenu({
    delegate: ".dataTable td",
    menu: [
      {title: "Delete", cmd: "delete"},
      {title: "Edit", cmd: "edit"}
    ],
    select: function(event, ui) {
        switch(ui.cmd){
            case "delete":
                $(ui.target).parent().remove();
                break;
            case "edit":
              $(ui.target).html(
                $('<input type="text"/>').val(
                  $(ui.target).text()
                ).bind( "keypress focusout",function (e) {
                  if (e.type=="keypress"?(e.keyCode ==13?true:false):true) {
                      $(this).parent().html(
                        $(this).val()
                      );
                    }
                  })
              );
                break;
        }
    },
    beforeOpen: function(event, ui) {
        var $menu = ui.menu,
            $target = ui.target
        ui.menu.zIndex(0);
    }
  });
} );

工作示例已在此处发布:

http://live.datatables.net/munonapo/1/embed

答案 1 :(得分:1)

您可以在drawCallback处理程序中初始化上下文菜单,并从id自己的回调中点击的行中检索$.contextMenu

drawCallback : function() {
  $.contextMenu({
        selector: 'tbody tr td', 
        callback: function(key, options) {
            var id = options.$trigger[0].parentElement.id;
            var m = "clicked: " + key + ' ' + id;
            window.console && console.log(m) || alert(m); 
            /*
             switch (key) {
               case 'delete' :
                 yourDeleteMethod(id); break;
               case 'edit' :
                 yourEditMethod(id); break;
               ...
              }
            */ 
        },
        items: {
            "edit": {name: "Edit", icon: "edit"},
            "cut": {name: "Cut", icon: "cut"},
           copy: {name: "Copy", icon: "copy"},
            "paste": {name: "Paste", icon: "paste"},
            "delete": {name: "Delete", icon: "delete"},
            "sep1": "---------",
            "quit": {name: "Quit", icon: function(){
                return 'context-menu-icon context-menu-icon-quit';
            }}
        }
    });
},

更新小提琴 - &gt;的 http://jsfiddle.net/0f9Ljfjr/900/

由于选择器设置为tbody tr tdid始终可以找到options.$trigger[0].parentElement.id。现在,您只需要响应您需要的操作,并使用检索到的id调用您自己的方法。