Jam*_*ead 10 jquery coding-style map
我前几天在代码库中看到了这个:
link.attr('style', map({
color: '#9a4d9e',
cursor: 'default'
}));
Run Code Online (Sandbox Code Playgroud)
map 定义为:
function map(map) {
var cssValue = [];
for (var o in map) {
cssValue.push(o + ':' + map[o] + ';')
}
return cssValue.join(';');
}
Run Code Online (Sandbox Code Playgroud)
是map吗?有没有更短的方法来做到这一点?
值得注意的是,"style"属性会覆盖由"class"属性中添加/定义的类设置的任何样式.
Kob*_*obi 19
可能不是.更好的解决方案可能是使用CSS:
link.css({color: '#9a4d9e',
cursor: 'default'});
Run Code Online (Sandbox Code Playgroud)
但是,.attr('style',)也会删除以前的内联样式,因此它的行为不完全相同.
如果您打算使用attr它,它的输入应该是一个字符串,而不是一个对象,它不是专门用于处理该style属性.在这种情况下的另一种选择是:
link.attr('style', "color:'#9a4d9e';cursor:'default'");
Run Code Online (Sandbox Code Playgroud)
在这种情况下似乎更清洁.在其他情况下,您map可以更轻松地将变量插入CSS.
map可能会被命名为更好.它还有一个实现错误 - 它在属性之间添加了两个分号:color:red;;cursor:default;
删除预览样式的简单解决方案是在调用.removeAttr('style')之前调用css.