繁体   English   中英

如何使用JavaScript中的括号符号将函数附加到对象?

[英]How to attach functions to objects using the bracket notation in JavaScript?

我正在编写一个JavaScript,该JavaScript应该将上下文菜单附加到文档中的元素。 上下文菜单的jquery插件需要上下文菜单的ID和options对象。 选项对象具有称为绑定的属性,该属性应具有键/值对,其中键是菜单项的ID,值是单击时调用的函数。

问题是我要填充的绑定对象在使用方括号概念时没有将功能附加为值,并且我需要它,因为菜单项的ID无法预先确定。

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

那可能只是Firebug的“越野车”(?)显示。 例:

var mytest = {};

var foo = function() {
};

mytest['foo'] = foo;

console.log(mytest);

将显示:

Object { }

看起来像一个空对象,但是如果单击它,您将看到内容。

您没有包括脚本正在处理的HTML,但是我猜测是所选的li元素没有id属性。 结果,当您将item.id分配给key ,它是一个空字符串 ,因此不是有效的属性名

如果在每个li上添加一个id ,它应该可以正常工作: http : //jsfiddle.net/8TL7u/

它在Chrome中运行,所以我记得我在使用Firefox 4 Beta,所以我刚刚重启了Firefox,它神奇地工作了。 如果我可以再次复制它,那么我将能够提供更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM