有人能解释这一行javascript吗?

有人能解释这一行javascript吗?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用DynaTree JavaScript树,并一直在修改它。具体地说,我试图根据节点的类型添加多个上下文菜单 基本上,我的想法是让上下文菜单向我的MVC(2)控制器发出一个ajax请求,并将此信息作为JSON传递,在JSON中它将用于创建一个可以在c#中访问的类 我在这里浏览了大约500篇文章之后,这篇文章还不错!现在我需要再次修改JS,以便根据类型选择适当的上下文菜单 我的清单看起来像 <div id="tree"> <ul> <li

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

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

我在这里浏览了大约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>
此行-$(span).contextMenu({menu:“myMenu1”},函数(action,el,pos){

似乎既可以设置上下文菜单,也可以在单击上下文菜单时触发。如果有人能为谷歌提供一些关键字,我会很高兴,因为我不知道


提前感谢

。contextMenu
看起来像一个插件,但是如果不知道它是哪个插件,就很难给出明确的答案。不过,初始化该插件似乎需要两个参数:

  • 包含任何设置参数的
    对象
    ——这对于插件来说是相当标准的
  • 激活菜单时调用的函数(可能)

  • 旁白:我不是100%清楚您打算在这里做什么,但您似乎在说,每次用户单击其中一个树项时,您都要执行AJAX调用以获取该项的上下文菜单?除非您确实需要使每个项的上下文菜单不同,否则我会嵌入上下文菜单的代码在页面中添加u,并用一些粘合javascript显示它;否则用户每次尝试执行普通UI操作时都会被困在等待服务器上——打开上下文菜单;更不用说服务器上的负载了。嗨,bloopletech,对不起,我不清楚。上下文菜单包含在三个列表中,用html硬编码。ajax part会在后台做与上下文相关的数据库类型的事情,即删除上下文点击会去删除一些东西。但基本上我的问题是:$(span).contextMenu({menu:“myMenu1”},function(action,el,pos){关键字函数出现时没有给出函数名。据我所知,这是不可能的,这是什么?我搜索它的目的是什么?哦,这是一个
    匿名函数
    ;您正在声明函数,然后将函数作为contextMenu函数的参数传递。再次感谢,这将是一个真正的帮助。谢谢Jamie、 我被dyna tree迷住了,我忘了它使用了另一个插件。我现在来看看。出于兴趣,有人说这可能是一个javascript闭包,这值得谷歌一试,还是方向不对。@DavidBattersby这不是闭包,但你可能想谷歌这个阶段,因为这是一个有用的知识;)你所看到的(没有名字的函数)是一个
    匿名函数
    。下面是一个关于javascript函数(和闭包)的详细答案:非常感谢-当我回到这里时,实际上我正在阅读这个链接。
    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); }
          })
        });
      };