Как прикрепить функции к объектам, используя скобочные обозначения в JavaScript? - PullRequest
0 голосов
/ 03 февраля 2011

Я пишу JavaScript, который должен прикрепить контекстное меню к элементу в документе.Плагин jquery для контекстного меню требует идентификатора контекстного меню и объекта параметров.У объектов параметров есть свойство bindings, которое должно иметь пары ключ / значение, где ключ - это идентификатор элемента меню, а значение - функция, вызываемая при щелчке.

Проблема состоит в том, что объект привязок, который яя пытаюсь заполнить не прикрепляет функции как значения при использовании скобки, и мне это нужно, поскольку идентификаторы пунктов меню не могут быть определены заранее.

    var bindings = {};

    var bindingsFunction = function(t){
        alert('Trigger was ' + t.id + '\nAction was Open');
    };

    var $listItems = $contextMenu.find('li');

    $listItems.each(function(index, item){
        var key = '' + item.id;
        bindings[key] = bindingsFunction;
    });

    console.log('bindings is empty', bindings); 

    var result = $icon.contextMenu(contextMenuId, {
        bindings: bindings
    });

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Это может быть просто «глючный» (?) Дисплей из Firebug.Пример:

var mytest = {};

var foo = function() {
};

mytest['foo'] = foo;

console.log(mytest);

будет отображаться:

Object { }

Выглядит как пустой объект, но если вы щелкнете по нему, вы увидите содержимое.

0 голосов
/ 03 февраля 2011

Это работало в Chrome, поэтому я вспомнил, что работаю над Firefox 4 Beta, поэтому я просто перезапустил Firefox, и он волшебным образом сработал.Если бы я мог воспроизвести это снова, я мог бы предоставить более подробную информацию.

0 голосов
/ 03 февраля 2011

Вы не включили HTML, над которым работает ваш скрипт, но я предполагаю, что выбранные элементы li не имеют свойства id.В результате, когда вы присваиваете item.id для key, это пустая строка и, следовательно, недопустимое имя свойства .

Если вы прикрепите id к каждому li, должно работать нормально: http://jsfiddle.net/8TL7u/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...