Jquery 剑道上下文菜单选择特定项目的功能

Jquery 剑道上下文菜单选择特定项目的功能,jquery,kendo-ui,kendo-contextmenu,Jquery,Kendo Ui,Kendo Contextmenu,我正在尝试使用kendoContextMenu小部件创建一个contextMenu。这是使用以下代码实现的 $("#contextMenu").kendoContextMenu({ target: "#tree", filter: ".k-item", select: function(e) { alert("Selected"); }, dataSource: [ { text: "Item1"}, { text: "SubMenu1",

我正在尝试使用kendoContextMenu小部件创建一个contextMenu。这是使用以下代码实现的

$("#contextMenu").kendoContextMenu({
target: "#tree",
filter: ".k-item",
select: function(e) {
    alert("Selected");
},
dataSource:
[
    { text: "Item1"},
    {
        text: "SubMenu1",
        items: [
            { text: "Item1" }
        ]
    },
    {
        text: "SubMenu2",
        items: [
            { text: "Item1" }
        ]
    }
]
});
但是我想为单击项目时要执行的每个项目指定一个函数。我不想根据文本内容决定执行什么


我试图在数据源中添加一个单击项,但似乎不起作用。

Kendo ContextMenu没有此功能,但您有两个选项:

首先,使用带有
onclick
事件的html配置上下文菜单:

<ul id="menu">
    <li>
        Option 1
        <ul>
            <li onclick="alert('test');">Sub option 1</li>
            <li>Sub option 2</li>
        </ul>
    </li>
    <li>Option 2</li>
</ul>
<script>
    $(document).ready(function() {        
        $("#menu").kendoContextMenu({
                orientation: orientation,
            });
        };
    });
</script>
  • 选择1
      子选项1
    • 次级选择2
  • 选择2
$(文档).ready(函数(){ $(“#菜单”).kendoContextMenu({ 方向:方向,, }); }; });

第二,如果您可以确保名称的唯一性,您可以在
数据源
配置中添加单击属性,然后在上下文菜单上选择事件,您可以在
数据源
中搜索相应的项目并手动执行附加的功能。

另一种方法是添加选择功能和切换案例,如果您有treeview,则会出现这种情况:

$("#menu").kendoContextMenu({
            select: function (e) {
                var button = $(e.item);
                var node = $(e.target);
                var tmpKendDiagram = $(".diagram").data("kendoDiagram");

                var tv = $(".tree-view").data("kendoTreeView");
                var item = tv.dataItem(node);
                var textSelect = $(e.item).children(".k-link").text();
                switch (textSelect) {
                    case '1option':
                        //do stuff
                        break;
                    case '2option':
                        //do stuf
                        break;
                    default:
                        break;
                }

            }
        });

我知道这很古老,但这是我实现它的方式

$(“#上下文菜单”).kendoContextMenu({
目标:“目标”,
选择:功能(e){
让index=$(e.item).index();
e、 sender.options.dataSource[index]。单击(e);
},
数据源:[
{文本:“复制”,
点击:功能(e){
控制台日志(“复制”);
}
},
{文本:“删除”,
点击:功能(e){
控制台日志(“已删除”);
}
}
]
});

目标

我无法确保名称的唯一性,因此无法使用选项2。这也是项目内容没有足够的信息来决定在“全局”选择功能中要做什么的原因之一。您的第一个解决方案的问题是,当我在li元素上添加onclick处理程序时,我没有可用的事件信息e.target。此时,我使用了您的第一个解决方案,并将目标存储在菜单的打开事件中。