根据标题真的。如何检查css属性是否设置?
如果注意到如果我检查$(elem).css('margin-top')
,它将返回0px
,即使我没有明确地设置此样式,无论是内联样式还是样式表。
基本上我每次将鼠标悬停在一个元素上(以垂直对齐某些内容)时都会设置边距,所以宁愿只做一次。
我无法在页面加载时设置对齐方式,因为元素被隐藏(display:none),所以需要在显示时进行。
根据标题真的。如何检查css属性是否设置?
如果注意到如果我检查$(elem).css('margin-top')
,它将返回0px
,即使我没有明确地设置此样式,无论是内联样式还是样式表。
基本上我每次将鼠标悬停在一个元素上(以垂直对齐某些内容)时都会设置边距,所以宁愿只做一次。
我无法在页面加载时设置对齐方式,因为元素被隐藏(display:none),所以需要在显示时进行。
if(!$(elem).data('hasSetMargin')){
$(elem).css('margin-top', someValue);
$(elem).data('hasSetMargin', true);
}
设置好几次会出现什么问题?
它看起来像你想尽早优化你的代码。
我不会将此作为早期优化。我的要求是设置一次。如果有一种简单的方法可以做到这一点,而不是在每次悬停时都进行保证金计算,那么我愿意选择这个选项。 – 2011-06-15 18:28:21
这并不容易分辨,因为有许多来源会影响款式的价值,如margin-top
。
不过,你不需要告诉真的是因为:
addClass
/removeClass
/toggleClass
)和(使用类选择)的代替设置自己的风格造型与纯静态CSS元素提高你的代码。这有助于使代码可读。关于可读性 - 你会喜欢读什么?这:
function() {
$(selector).css('margin-top', '10px').css('border', '2px red solid');
}
或本:
function() {
$(selector).addClass('update-pending');
}
不幸的是我不能使用类。保证金是基于一个元素的内容计算的,所以它不是一个仅仅添加一个css类的问题。虽然你说不止一次设定保证金是没有害处的,但似乎没有必要。 @ Spycho的解决方案可能是解决这个问题的方法。 – 2011-06-15 18:32:31
其实边距设置,甚至在不显示它的工作。 http://jsfiddle.net/ZnbCn/ – Bakudan 2011-06-15 16:48:37