Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:向关联数组添加元素_Javascript_Jquery_Contextmenu - Fatal编程技术网

Javascript:向关联数组添加元素

Javascript:向关联数组添加元素,javascript,jquery,contextmenu,Javascript,Jquery,Contextmenu,我正在尝试构建一个用于jQuery contextMenu的菜单。它将是动态的。我试图向它添加一个元素,但它报告了错误“undefined is not a function” 我的菜单在没有试图推送新元素的代码的情况下工作 //Build the menu var menudata = { "Download Call": {name: "Download_Call"}, "sep1": "---------", "View Comments": {name: "Vie

我正在尝试构建一个用于jQuery contextMenu的菜单。它将是动态的。我试图向它添加一个元素,但它报告了错误“undefined is not a function”

我的菜单在没有试图推送新元素的代码的情况下工作

//Build the menu
var menudata = {
    "Download Call": {name: "Download_Call"},
    "sep1": "---------",
    "View Comments": {name: "View_Comments"}
};

menudata.push (
    {
        "test": {name: "test"}
    }
);

//Generate the context menu
$.contextMenu({
    selector: '.context-menu-one',
    trigger: 'left',
    callback: function(key, options) {
        var m = "clicked: " + key + " on " + $(this).attr('class');
        alert(m);
    },
    items: menudata
});
我假设这是一个数据类型问题,但任何帮助都将不胜感激。

没有
推送方法。只有我们有。您可以尝试以下方法:

menudata[ "test" ] = {name: "test"};
的没有
push
方法。只有我们有。您可以尝试以下方法:

menudata[ "test" ] = {name: "test"};

你在哪一行出错?你有一个对象-JS没有关联数组。请注意,任何语言中的关联数组(是的,在JS对象中实现了关联数组的概念,但这只是一个命名问题,没有什么基础)都应该是无序的。幸运的是,IE、Firefox、Safari和Chrome都保留了创作顺序。但是,任何规范都不能保证这一点。事实上,ECMA规范明确规定不保留订单。任何希望像您拥有的那样保留对象顺序的代码都应该被认为是错误的。应该特别注意的是,关联数组的最快/最有效的实现——哈希表(或哈希树)具有伪随机顺序,这取决于键上散列函数的结果。错误出现在哪一行?您有一个对象-JS没有关联数组。请注意关联数组(是的,在JS对象中实现了关联数组的概念,但这只是一个命名问题,没有什么基础)在任何语言中都应该是无序的。幸运的是,IE、Firefox、Safari和Chrome都保留了创作顺序。但是,任何规范都不能保证这一点。事实上,ECMA规范明确规定不保留订单。任何希望保留对象顺序的代码都应该被认为是错误的。需要特别注意的是,最快/最有效的关联数组实现—哈希表(或哈希树)具有伪随机顺序,这取决于哈希函数对键的结果。或点语法:menudata.test={name:“test”};@Jason是的,但正如我从OP代码中看到的,他有一些名为
space
char的对象属性,所以最好在本例中使用括号。或者点语法:menudata.test={name:“test”}@Jason是的,但正如我从OP code中看到的,他有一些名为
space
char的对象属性,所以最好在本例中使用括号。