我正在努力做一些我做过很多次的事情。我无法弄清楚为什么这不起作用。无论我如何编写jQuery代码,它都无法正常工作。 menuitems[i].action()
只是不工作。下边是 例1 在这个例子中,无论点击什么项目,它都会返回最后一项的动作(在这个例子中它是 alert('Forward!')
)。第二个返回undefined属性。完整的错误如下。
我的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);
}
这将返回带有Forward的警报!无论点击哪一项,后退或前进。
例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);
}
我明白了:
未捕获的TypeError:无法读取 属性'动作'未定义
我试过的其他随机的东西是分离点击并将其重新连接到其外部 appendTo()
块,改变了 action()
至 newtest()
确保它与任何内置关键字没有冲突。我也试过做了 $('body').append('<li>{blah blah}</li>').find('li').click(function(){/*blah blah*/});
但它仍然返回相同的东西。我想法了!