Я пытаюсь сделать то, что делал много раз. Я не могу понять, почему это не работает. Как бы я ни писал код jQuery, он не работает. menuitems [i] .action ()
просто НЕ работает. Ниже Пример 1 , в котором этот пример, независимо от того, на какой элемент был нажат, он возвращает действие последнего элемента (в этом примере это предупреждение («Вперед!»)
). Второй возвращает неопределенное свойство. Полная ошибка ниже.
Мой плагин 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);
}
Я получаю:
Uncaught TypeError: Невозможно прочитать
Мой плагин 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); }
Я получаю:
Uncaught TypeError: Невозможно прочитать
Мой плагин 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); }
Я получаю:
Uncaught TypeError: Невозможно прочитать свойство action of undefined
Другие случайные вещи, которые я пробовал: отсоединение щелчка и его повторное присоединение за пределами этого блока
appendTo ()
, измененоaction ()
наnewtest ()
, чтобы убедиться, что он не конфликтует с какими-либо встроенными ключевыми словами. Я также пробовал сделать$ ('body'). Append ('
, но он все равно вернул то же самое. У меня нет идей!{blah blah} ') .find ('li'). Click (function () {/ * blah blah * /});