jQuery EasyUI menu() TypeError: _391 is undefined

JavaScript 2013-11-10 jQuery,EasyUI,右键菜单

明天就是光棍节了,可惜不知道为什么光棍节已经变成电商的主角了,甚至还有双十一五万元团购越南新娘的商品推出!

jQuery问世以来,已经有N种插件基于jQuery开发,俗称jQuery插件。其中jQuery EasyUI也是其中一员,因为前面同事已经使用这个插件搭建后台,而正好我又需要做一个右键菜单功能,所以研究上jQuery EasyUI了。

本着jQuery简约的开发风格,草草看了以下demo中menu里的basic例子,就果断下手。结果报错:

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});

里里外外看了三遍,也没看出有问题。上网搜居然还搜不到,查手册也搞不定。

开始恐惧。。。

这是什么问题呢?开始仔细研究basic的例子,发现也没有什么不同。于是我直接在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了!

文字链接:《jQuery EasyUI menu() TypeError: _391 is undefined

文章地址:http://www.qttc.net/201311383.html

除非标注,琼台博客所有博文均为原创,转载请加文字链接注明来源

乳名?小名?昵称?网名?均可

email,放心,我不会给你乱投广告的

想获得回访就把你的站点URL写上(没有留空)

[NOTICE]木要投放广告
[NOTICE]木要骂人,说不该说的话
[NOTICE]自由言论,但要遵纪守法

Comments 0

    Hi,你想第一个做沙发么?