使用Jquery $.each()操作Javascript对象
Javascript object manipulation with Jquery $.each()
我哪里做错了?
var menu = {
menuset : {
first : false,
second : false,
third : false
},
setMenus : function (selected) {
var menuCollection = this.menuset;
$.each(menuCollection, function (key, element) {
if (selected===key) {
key=true;
} else {
key=false;
}
});
}
}
当我执行"menu.setMenus(first)"我希望它像这样设置对象:
menuset : {
first : true,
second : false,
third : false
}
应该使用$.each()以外的东西吗??
try -
var menu = {
menuset : {
'first' : false,
'second' : false,
'third' : false
},
setMenus : function (selected) {
var menuCollection = this.menuset;
$.each(menuCollection, function (key, element) {
if (selected === key) {
menuCollection[key] = true;
} else {
menuCollection[key] = false;
}
});
}
}
menu.setMenus('first');
Demo - http://jsfiddle.net/nu9v2/
以下几点:
-
first
是它的一个属性。菜单,但你却把它当作first
。 -
$.each
的回调fn的第一个参数是一个整数索引,但是你
不需要jQuery
var menu = {
menuset : {
'first' : false,
'second' : false,
'third' : false
},
setMenus : function (selected) {
// set other values to false
var keys = Object.keys(this.menuset);
for (var i = 0, len = keys.length; i < len; i++) {
this.menuset[keys[i]] = false;
}
// set correct value to true
this.menuset[selected] = true;
}
}
示例应该使用$.each()以外的东西吗??
我认为map在这里会更好:
setMenus: function (selected) {
this.menuset = $.map(this.menuset, function(val, key) { return key == selected })
}
相关文章:
- 操作javascript变量[HTML]以只显示文本
- 如何使用keyup或input进行操作?javascript(jQuery)
- RubyonRails环境控制器操作JavaScript响应
- 在替换之前,操作javascript正则表达式匹配,例如$1
- 每次 iframe 重新导航时执行操作.(JavaScript)
- 使用下划线操作 JavaScript 对象
- 如何阻止 confirm() 的默认操作 JavaScript
- 结束游戏的逻辑操作 Javascript
- 操作 JavaScript 日期对象
- CSS 样式操作:Javascript 不起作用
- 镜像/复制鼠标操作 JavaScript
- 使用Java操作JavaScript
- 操作JavaScript数组
- 循环遍历无序列表并对每个节点执行操作Javascript
- 操作Javascript数据在D3.js上切换系列
- 如何通过在检查器中操作Javascript来抓取表?页面仅显示当前日期's的数据,但我想回到过去,重新收集
- 从java操作Javascript对象
- 更改默认键操作JavaScript
- 使用Jquery $.each()操作Javascript对象
- 是否有一种方法可以使用JS或jQuery来操作JavaScript表单