Javascript 如何在上下文菜单中触发全局函数

Javascript 如何在上下文菜单中触发全局函数,javascript,jquery,function,events,contextmenu,Javascript,Jquery,Function,Events,Contextmenu,我有一个由文档列表(来自JSON文件)填充的列表,单击复选框可将该特定文档添加到收藏夹列表中 我创建了一个带有三个选项的自定义上下文菜单我正在尝试使它能够让某人单击其中一个选项(“添加到收藏夹”),它的操作与我上面描述的相同。简单地说,我不知道如何触发该功能,因为它超出了原始收藏夹功能的范围。我试着将收藏夹功能分组到它自己的函数中并引用它,但我的语法出了问题(或者我偏离了方向,方向不对?)。有什么想法吗 JS添加收藏夹功能: HTML代码段: 打开文档 设置为收藏夹 faveFunc仅设置

我有一个由文档列表(来自JSON文件)填充的列表,单击复选框可将该特定文档添加到收藏夹列表中

我创建了一个带有三个选项的自定义上下文菜单我正在尝试使它能够让某人单击其中一个选项(“添加到收藏夹”),它的操作与我上面描述的相同。简单地说,我不知道如何触发该功能,因为它超出了原始收藏夹功能的范围。我试着将收藏夹功能分组到它自己的函数中并引用它,但我的语法出了问题(或者我偏离了方向,方向不对?)。有什么想法吗

JS添加收藏夹功能: HTML代码段:
  • 打开文档
  • 设置为收藏夹

faveFunc
仅设置侦听器

让我们看一下faveFunc:

function faveFunc() {
    let addFave = $table.on("click", ".checkbox-class", function(e) {
        // ...
    })
}
当您调用
faveFunc
时,它所做的只是设置一个“click”侦听器。它实际上并不执行click侦听器

文档
不是您所想的

关于
$(文档)。在(“上下文菜单”)
$(文档)。在(“单击”)
文档是网页上的全局变量,它引用网页本身。它不涉及网页的任何内容。当您单击或右键单击页面上的任意位置时,将触发这些事件

设置事件侦听器的方式要一致。

您目前正在以三种不同的方式执行此操作:

  • $(选择器)。在(“单击”)
  • $(选择器)。单击()
  • $(选择器)。在(“单击”,筛选)
挑一个。就我个人而言,我更喜欢
$(选择器)

将事件处理程序设置为命名函数

与此相反:

function faveFunc() {
    let addFave = $table.on("click", ".checkbox-class", function(e) {
        // ...
    })
}
…我会这样做:

function faveFunc(e){
    // ...
}
$("#km-table-id.checkbox-class").on("click", faveFunc)
这样,您就可以重复使用事件处理程序:

function faveFunc(e){
    // ...
}
$("#km-table-id.checkbox-class").on("click", faveFunc)
$("[data-action='add']").on("click", faveFunc)
您还可以将它们组合成一个函数,因为jQuery支持CSS

$("#km-table-id.checkbox-class, [data-action='add']").on("click", faveFunc)

那么,addFave()执行单击时应该重用什么呢?我很难进一步回答,因为我仍然不清楚您到底想发生什么。你能把它写成一系列的步骤吗?大概是:1。用户右键单击。2.将打开关联菜单,显示文档列表。3.用户单击文档。4.文档被添加到他们的收藏夹列表中。事实上,这正是我想要的。工作原理:右键单击表格单元格并打开关联菜单。我想要实现的是:用户选择“添加到收藏夹”,然后该文档被添加到列表中。为了清楚起见,我将更新我的问题的主体。首先要解决一件事,关于
$(文档)。在(“上下文菜单”)
$(文档)。在(“单击”)
文档是指网页本身的网页上的全局变量。它不涉及网页的任何内容。当你点击或右键点击页面上的任何地方时,这些事件就会触发。我没有注意到,但你肯定是对的。我这样做是为了只在桌子上点击鼠标右键。快速提问:我是否可以将“添加到收藏夹”的
数据操作
附加到原始
addFave
行,以便两者都可以使用?我将对上面的代码进行单独的更新。
function faveFunc(e){
    // ...
}
$("#km-table-id.checkbox-class").on("click", faveFunc)
function faveFunc(e){
    // ...
}
$("#km-table-id.checkbox-class").on("click", faveFunc)
$("[data-action='add']").on("click", faveFunc)
$("#km-table-id.checkbox-class, [data-action='add']").on("click", faveFunc)