jQuery:使用object设置元素的'style'属性

时间:2010-05-04 04:16:31

标签: jquery map coding-style

我前几天在代码库中看到了这个:

            link.attr('style', map({
                color: '#9a4d9e',
                cursor: 'default'
            }));

map定义为:

function map(map) {
    var cssValue = [];

    for (var o in map) {
        cssValue.push(o + ':' + map[o] + ';')
    }

    return cssValue.join(';');
}

map必然吗?有没有更短的方法来做到这一点?

重要的是要注意“style”属性会覆盖由“class”属性中添加/定义的类设置的任何样式。

2 个答案:

答案 0 :(得分:19)

可能不是。更好的解决方案可能是使用CSS:

link.css({color: '#9a4d9e',
          cursor: 'default'});

但是,.attr('style',)也会删除以前的内联样式,因此它的行为不完全相同 如果您要使用attr,它的输入应该是一个字符串,而不是一个对象,它不是专门用于style属性的。在这种情况下的替代方案是:

link.attr('style', "color:'#9a4d9e';cursor:'default'");

在这种情况下似乎更清洁。在其他情况下,您的map可以更轻松地将变量插入CSS map可能会被命名为更好。它还有一个实现错误 - 它在属性之间添加了双分号:color:red;;cursor:default;

删除预览样式的简单解决方案是在致电.removeAttr('style')之前致电css

答案 1 :(得分:0)

.addClass('highlight')到元素。你的css类是预定义的。  (这对我有用,因为它不想进行2个样式属性更改)