我用Jquery做的树形菜单,用来显示组织树。
页面上有<ul id="browser" class="filetree"></ul>
页面加载时,通过AJAX调用后台生成树,然后通过$("#browser").attr("innerHTML",data)把树填充到页面上去。
树是多层级的,每点击一个节点,会调用后台取得子节点。问题是:右键菜单出不来,也没有脚本错误。
我直接将<span class="folder">test</div>写到页面上,却可以调出右键菜单。我怀疑是不是绑定右键菜单的代码执行时,树还没加载,所以$('span.folder')找不到。附上部分代码,请求大家帮我找找原因,谢谢了~~!树结构:<div id="main" style="font-size: 12px;">
<ul id="browser" class="filetree treeview">
<li class="collapsable lastCollapsable" id="li001000">
<div class="hitarea collapsable-hitarea lastCollapsable-hitarea"></div>
xxx公司
<ul style="display: block;">
<li class="expandable" id="li00100086984">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100086984" txt="001000-00100086984" cuorder="1" orgtype="ORG">综合部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100000200">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100000200" txt="001000-00100000200" cuorder="2" orgtype="DEPT">企业发展部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100006000">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100006000" txt="001000-00100006000" cuorder="3" orgtype="DEPT">战略投资部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100000300">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100000300" txt="001000-00100000300" cuorder="4" orgtype="DEPT">计划管理部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100000400">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100000400" txt="001000-00100000400" cuorder="5" orgtype="DEPT">财务部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100000500">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100000500" txt="001000-00100000500" cuorder="6" orgtype="DEPT">人力资源部
</span>
<ul style="display: none;"></ul>
</li>
<li class="expandable" id="li00100000600">
<div class="hitarea expandable-hitarea "></div>
<span class="folder" ondblclick=onmousedown= showmenu ( this )
id="00100000600" txt="001000-00100000600" cuorder="7" orgtype="DEPT">市场部
</span>
<ul style="display: none;"></ul>
</li>
</ul>
</li>
</ul>
</div>
右键菜单:<div class="contextMenu" id="orgMenu">
<ul>
<li id="add">
新增子组织
</li>
<li id="modify">
修改组织
</li>
<li id="delete">
删除组织
</li>
</ul>
</div>
绑定右键菜单:$('span.folder').contextMenu('orgMenu', {
bindings : {
'add' : function(t) {
alert('Trigger was ' + t.id + '\nAction was Open');
},
'modify' : function(t) {
alert('Trigger was ' + t.id + '\nAction was Email');
},
'delete' : function(t) {
alert('Trigger was ' + t.id + '\nAction was Save');
}
}
});

解决方案 »

  1.   

    你每增加一个,重新调用一下。树形菜单化函数(如:jtree())
    比如folder,<span class="folder">test</div>
    一般树形化后,他的代就变了。有可能不是<span class="folder">test</div>了。或者在树形化函数中用live 去操作树形化。一般默认的新增加的不会树形化。
      

  2.   


    "你每增加一个,重新调用一下。树形菜单化函数(如:jtree())"
    这个可行,非常感谢~~!