根据这个问题,我需要检查属性是否不在对象中:
所以,我们有一些样式:
.foo {
top: 13px;
width: 37px;
}
...还有一个像这样的对象:
var keyframe = {
0: {
top: 0
},
1000: {
top: 100
},
2000: {
width: 100
}
};
现在我需要遍历所有不在下一个/上一个框架项中的属性,以使用来自 jQuery 对象的 css 值填充缺失的属性。
所以最终的对象看起来像这样:
var keyframe = {
0: {
top: 0,
width: '37px'
},
1000: {
top: 100,
width: '37px'
},
2000: {
top: 100,
width: 100
}
};
我试过这样的事情:
http://fiddle.jshell.net/WdNge/
var $foo = $('.foo');
for (var key in keyframe) {
var obj = keyframe[key];
for(var ok in obj) {
if (!(ok in obj)) obj[ok] = $foo.css(ok);
}
}
但似乎
if (!(ok in obj)) // is always `truthy`
但是,如果我直接声明它
if (!('top' in obj)) // it works...
有任何想法吗?
更新
我什至尝试过这样的事情,但没有成功:
http://fiddle.jshell.net/WdNge/1/
var $foo = $('.foo');
var keys = [];
for (var key in keyframe) {
var obj = keyframe[key];
var k = Object.keys(obj);
keys.push(k[0]);
for(var i = 0; i < keys.length; i++) {
var ok = keys[i];
if (!(ok in obj)) obj[ok] = $foo.css(ok);
}
}