Jquery 如何检查是否设置了css属性?
按照标题真的 如果注意,如果我选中Jquery 如何检查是否设置了css属性?,jquery,Jquery,按照标题真的 如果注意,如果我选中$(elem).css('margin-top'),它将返回0px,即使我没有显式地设置此样式,无论是内联样式还是在样式表中 基本上,每次我将鼠标悬停在某个元素上时都会设置边距(以垂直对齐某些内容),所以我宁愿只执行一次 我无法在页面加载时设置对齐方式,因为元素是隐藏的(显示:无),所以需要在显示时进行对齐。多次设置有什么问题 if(!$(elem).data('hasSetMargin')){ $(elem).css('margin-top', som
$(elem).css('margin-top')
,它将返回0px
,即使我没有显式地设置此样式,无论是内联样式还是在样式表中
基本上,每次我将鼠标悬停在某个元素上时都会设置边距(以垂直对齐某些内容),所以我宁愿只执行一次
我无法在页面加载时设置对齐方式,因为元素是隐藏的(显示:无),所以需要在显示时进行对齐。多次设置有什么问题
if(!$(elem).data('hasSetMargin')){
$(elem).css('margin-top', someValue);
$(elem).data('hasSetMargin', true);
}
看起来您正在尝试提前优化代码。多次设置有什么问题
看起来您正在尝试尽早优化代码。这不容易判断,因为有许多来源会影响样式的值,例如
边距顶部
但是,你不需要说真的,因为:
addClass
/removeClass
/toggleClass
)和使用纯静态CSS(使用类选择器)设置元素样式(而不是自己设置样式)来改进代码。这样做的另一个好处是使代码可读function() {
$(selector).css('margin-top', '10px').css('border', '2px red solid');
}
或者这个:
function() {
$(selector).addClass('update-pending');
}
这不容易区分,因为有许多来源会影响样式的值,例如
margintop
但是,你不需要说真的,因为:
addClass
/removeClass
/toggleClass
)和使用纯静态CSS(使用类选择器)设置元素样式(而不是自己设置样式)来改进代码。这样做的另一个好处是使代码可读function() {
$(selector).css('margin-top', '10px').css('border', '2px red solid');
}
或者这个:
function() {
$(selector).addClass('update-pending');
}
实际上,即使未显示边距,边距也已设置并起作用。实际上,即使未显示边距,边距也已设置并起作用。我不认为这是早期优化。我的要求是设置一次。如果有一种简单的方法可以做到这一点,而不是在每次悬停时都进行保证金计算,那么这就是我想要的选择。我不会将其归类为早期优化。我的要求是设置一次。如果有一种简单的方法可以做到这一点,而不是在每次悬停时都执行保证金计算,那么这就是我想要的选项。不幸的是,我不能使用类。边距是根据元素的内容计算的,因此这不是仅仅添加css类的问题。虽然你说不止一次设定保证金没有坏处,但这似乎仍然没有必要@Spycho的解决方案可能就是这个问题的解决方案。不幸的是,我不能使用类。边距是根据元素的内容计算的,因此这不是仅仅添加css类的问题。虽然你说不止一次设定保证金没有坏处,但这似乎仍然没有必要@Spycho的解决方案可能就是这个问题的解决方案。