我正在使用DynaTree JavaScript树,并已对其进行了修改。具体来说,我试图根据节点的类型添加多个上下文菜单。
基本上,我的想法是让上下文菜单向我的MVC(2) Controller 发出ajax请求,并将该信息作为JSON传递,该信息将用于创建可在C#中访问的类。
在这里浏览了大约500个帖子后,我可以正常工作了!现在,我需要再次修改JS,以便根据类型选择合适的上下文菜单。
我的 list 看起来像
<div id="tree">
<ul>
<li id="'ID':1,'TYPE':1" title="Look: a tool tip!">item1 with key and tooltip</li>
<li id="'ID':2,'TYPE':2" class="activate">item2: activated on init</li>
<li id="'ID':3,'TYPE':3" class="folder">Folder with some children
<ul>
<li id="'ID':4,'TYPE':1">Sub-item 3.1</li>
<li id="'ID':5,'TYPE':1">Sub-item 3.2</li>
</ul>
</li>
<li id="'ID':6,'TYPE':1" class="expanded">Document with some children (expanded on init)
<ul>
<li id="'ID':7,'TYPE':1'">Sub-item 4.1</li>
<li id="'ID':8,'TYPE':1'">Sub-item 4.2</li>
</ul>
</li>
<li id="'ID':9,'TYPE':1" class="lazy folder">Lazy folder</li>
</ul>
</div>
然后我返回ID并使用jQuery.parseJSON发送到MVC。
我不懂的JS在这里:
function bindContextMenu(span) {
// Add context menu to this node:
debugger;
$(span).contextMenu({ menu: "myMenu1" }, function (action, el, pos) {
var node = $.ui.dynatree.getNode(el).toString();
node = node.replace(/'/g, '\"');
node = jQuery.parseJSON('{' + node + '}');
$.ajax({
type: "POST",
url: "/TreeView/Click/",
data: { ID: node.ID, TYPE: node.TYPE },
error: function (request) { $("#message").html("error"); },
success: function (result) { $("#message").html("Success - " + result); }
})
});
};
这行-$(span).contextMenu({菜单:“myMenu1”}},函数( Action ,el,pos){
似乎既可以设置上下文菜单,也可以在单击上下文菜单时触发。如果有人可以为Google提供一些关键字,我会很高兴,因为我没有头绪。
提前致谢
最佳答案
.contextMenu
看起来像一个插件,但是如果不确切知道哪个插件,很难给出确切的答案。但是,似乎初始化该插件需要两个参数:
object
-这是插件