任何人都可以解释这一行的JavaScript吗?

时间:2012-11-28 14:39:59

标签: javascript jquery ajax

我正在使用DynaTree JavaScript树并且一直在修改它。具体来说,我试图根据节点的类型添加多个上下文菜单。

基本上我的想法是让上下文菜单向我的MVC(2)控制器发出ajax请求,它会将这些信息作为JSON传递,在那里它将用于创建一个可以在c#中访问的类。 / p>

通过这里约500个帖子后,我的工作正常!现在我需要再次修改JS,以便根据类型选择合适的上下文菜单。

我的列表看起来像

<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({menu:“myMenu1”},function(action,el,pos){

似乎都设置了contextmenu,并且在单击上下文菜单时也会触发。如果有人可以为Google提供一些关键字,我会很高兴,因为我没有线索。

提前致谢

1 个答案:

答案 0 :(得分:3)

.contextMenu看起来像一个插件,但是如果不确切知道它是哪个插件,很难给出明确的答案。然而,看起来初始化该插件需要2个参数:

  1. 包含任何设置参数的object - 这是插件
  2. 的标准配置
  3. 激活菜单时可能调用的函数(可能)。