我可以使用制表符插件从一个按钮显示 rowContextMenu 来触发一个功能吗?

Can I show rowContextMenu from a button doing a trigger to one function using tabulator pluggin?

我们有一个制表符列定义,其中之一是由格式化程序创建的按钮

{title:"input", field:"blank",   width:30,  frozen:true, responsive:0,formatter:customFormatter2} 

我们在格式化程序中创建一个按钮

var customFormatter2 = function (cell, formatterParams) {
    var $button=$('<button>').text('Hola')
    $button.click(function(){
         $(cell.getElement()).trigger('contextmenu')
    })

    return $button.get(0);
}

我们还在制表符中创建了一个 rowContextmenu。

我想调用当我们在任何行中右键单击时制表符显示的菜单。

我尝试从单元格、行...调用触发器,但我不知道该事件是否可访问,或者我不知道该怎么做。

谢谢

我不经常使用 jQuery,但我相信唯一缺少的是防止在隐藏菜单的 contextmenu 事件之后传播点击事件。这样的事情应该可行,但我还必须将 pageX 和 pageY 添加到我的自定义事件中,以便 Tabulator 可以计算显示菜单的位置。我不确定如何在 jQuery.

中执行此操作
$button.click(function(event){
  event.stopImmediatePropagation();
  $(cell.getElement()).trigger('contextmenu');
});

或者没有 jQuery 并且绝对有效,

function customFormatter(cell, formatterParams){
    const button = document.createElement('button');
    button.textContent = "Hola";
    button.addEventListener('click', (event) => {
        event.stopImmediatePropagation();
        const myEvent = new Event('contextmenu');
        myEvent.pageX = event.pageX;
        myEvent.pageY = event.pageY;
        cell.getRow().getElement().dispatchEvent(myEvent);
    })
    return button;
}

这是一个没有 jQuery 的完整示例。 https://jsfiddle.net/nrayburn/guxkw394/101/

注意这一点。因为我们正在创建自定义事件,所以它不包含真实事件所具有的所有常规属性。如果 Tabulator 开始依赖于不同的事件属性,它将破坏此代码。 (也许您可以从点击复制原始事件并将这些属性传递到自定义事件中。不太确定该怎么做。)