正在使用jQuery EasyUI做一个右键菜单功能,结果报错:TypeError: _391 is undefined
源码:
$("body").append('<div id="a" class="easyui-menu" style="display:hidden;"><div>one</div><div>two</div></div>');
$("#a").menu("show",{left:100, top:100});
怎么看都没发现写的有什么问题,按照例子我又写了一个做测试
html代码
<div id="a" class="easyui-menu" style="display:hidden;">
<div>one</div>
<div>two</div>
</div>
js代码
$("#a").menu("show",{left:100, top:100});
居然成功了,由此我推断js动态创建的div不能被menu()?这让我有点怀疑jQuery EasyUI的特性。后来马上推翻这个想法,因为这不太可能。于是翻阅手册希望查找到是否有其它类似创建DOM节点的API,找了好久也没有!
最后还是通过自己测试,发现其实是支持js动态创建DOM点的,只不过需要先初始化一下
$("body").append('<div id="a" class="easyui-menu" style="display:hidden;"><div>one</div><div>two</div></div>');
$("#a").menu(); // 要初始化
$("#a").menu("show",{left:100, top:100});
为什么需要先初始化呢?我判断jQuery EasyUI在页面加载完毕以后会遍历所有相关的节点(通过class)并进行相应初始化,而js动态创建的节点并没有初始化就调用show自然就报错,当然只需要初始化一次以后,就可以无限次的show和hide了!