我正在尝试做我做过很多次的事情。我无法弄清楚为什么这不起作用。无论我如何编写jQuery代码,它都不起作用。 menuitems[i].action()
只是不起作用。下面是示例1在这个示例中,无论点击哪个项目,它都会返回最后一项的动作(在本例中为alert('Forward!')
)。第二个返回未定义的属性。下面的完整错误。jQuery插件返回“无法读取未定义的属性”
我的jQuery插件被称为像这样(下面的例子是与此相同的调用发生什么):
$('p').contextMenu([
{
name:'Back',
action:function(){
alert('Back!');
},
icon:'http://cdn.iconfinder.net/data/icons/crystalproject/16x16/actions/agt_back.png'
},
{
name:'Forward',
action:function(){
alert('Forward!');
},
icon:'http://cdn.iconfinder.net/data/icons/crystalproject/16x16/actions/agt_forward.png'
}
]);
例1:
for (i in menuitems){
$('<li/>',{
'html':'<img src="'+menuitems[i].icon+'">'+menuitems[i].name,
'class':o.itemClass,
'click':function(){
menuitems[i].action();
}
}).appendTo('.'+o.listClass);
}
这将返回一个警报,前进!无论哪个项目,后退或前进,都会被点击。
例2:
var len = menuitems.length;
for (var i = 0; i < len; i++){
$('<li/>',{
'html':'<img src="'+menuitems[i].icon+'">'+menuitems[i].name,
'click':function(){
menuitems[i].action();
},
'class':o.itemClass
}).appendTo('.'+o.listClass);
}
我得到:
Uncaught TypeError: Cannot read property 'action' of undefined
其他随机的东西,我试图进行拆卸点击重新连接它是appendTo()
块之外,改变action()
到newtest()
使确定它没有与任何内置关键字冲突。我也试过做$('body').append('<li>{blah blah}</li>').find('li').click(function(){/*blah blah*/});
,但它仍然返回相同的东西。我要离开创意!
你有没有尝试用调试器通过这个步骤? – Phil 2010-11-12 05:26:36
对调试器有任何建议吗?我只是使用铬的检查员 – 2010-11-12 05:27:57
尝试萤火虫,一个Firefox插件 – subosito 2010-11-12 05:33:55