我可以使用制表符插件从一个按钮显示 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 开始依赖于不同的事件属性,它将破坏此代码。 (也许您可以从点击复制原始事件并将这些属性传递到自定义事件中。不太确定该怎么做。)
我们有一个制表符列定义,其中之一是由格式化程序创建的按钮
{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 开始依赖于不同的事件属性,它将破坏此代码。 (也许您可以从点击复制原始事件并将这些属性传递到自定义事件中。不太确定该怎么做。)