我在另一天在我们的代码库中看到了这一点:
link.attr('style',map({ color: '#9a4d9e',cursor: 'default' }));
地图定义为:
function map(map) { var cssValue = []; for (var o in map) { cssValue.push(o + ':' + map[o] + ';') } return cssValue.join(';'); }
是地图必然吗?有更短的方法来做到这一点吗?
解决方法
可能不会.更好的解决方案可能是使用CSS:
link.css({color: '#9a4d9e',cursor: 'default'});
但是,.attr(‘style’,)也会删除以前的内联样式,因此它的行为不完全相同.
如果要使用attr,它的输入应该是一个字符串,而不是一个对象,它不是专门用于使用style属性.在这种情况下的另一种选择是:
link.attr('style',"color:'#9a4d9e';cursor:'default'");
在这种情况下看起来更干净.在其他情况下,您的地图可以更容易地将变量插入到CSS中.
地图可能被命名得更好.它也有一个实现错误 – 它在属性之间添加双分号:color:red ;; cursor:default;