如何检查是否设置了css属性?

时间:2011-06-15 16:20:16

标签: jquery

根据标题确实。

如果注意到,如果我检查$(elem).css('margin-top')它会返回0px,即使我没有明确设置此样式,无论是内联还是样式表。

基本上我每次将鼠标悬停在一个元素上时设置边距(垂直对齐某些内容),所以宁愿这样做一次。

我无法在页面加载时设置对齐,因为隐藏了元素(display:none),因此需要在显示它们时完成。

3 个答案:

答案 0 :(得分:4)

if(!$(elem).data('hasSetMargin')){
    $(elem).css('margin-top', someValue);
    $(elem).data('hasSetMargin', true);
}

答案 1 :(得分:2)

多次设置有什么问题?

看起来您正在尝试尽早优化代码。

答案 2 :(得分:1)

这并不容易分辨,因为有很多来源会影响margin-top等风格的价值。

但是,你不需要说出真的因为:

  1. 多次设置不会对您的情况造成伤害。
  2. 您可以通过添加/删除/切换HTML类(addClass / removeClass / toggleClass)来改进代码,并使用纯静态CSS(使用类选择器)设置元素样式而不是自己设置样式。这有使您的代码可读的额外好处。
  3. 关于可读性 - 你还想读什么?这样:

    function() {
        $(selector).css('margin-top', '10px').css('border', '2px red solid');
    }
    

    或者这个:

    function() {
        $(selector).addClass('update-pending');
    }