我需要检查一个元素是否具有已定义的css属性,但是我在使用jQuery.css()函数时遇到了一些问题
我要找的属性是宽度
如果元素没有定义的宽度,我尝试以下操作:
if(base.$element.css('width')!='undefined')
我得到浏览器的计算宽度
下面是一个非常简单(可能需要改进)的插件,它将为您提供内联样式属性的值(如果找不到该属性,则返回undefined):
(函数($){
$.fn.inlineStyle=函数(prop){
var style=this.attr(“style”),
价值
样式和样式.拆分(“;”).forEach(函数(e){
var style=e.split(“:”);
如果($.trim(样式[0])==prop){
值=样式[1];
}
});
返回值;
};
}(jQuery));
你可以这样称呼它:
//返回“width”属性的值或“undefined”`
变量宽度=$(“#someElem”).inlineStyle(“宽度”);
这里有一个有效的例子
请注意,它将仅返回匹配集中第一个元素的值
由于当找不到该样式属性时,它返回undefined,因此您可以在如下情况下使用它:
if(base.$element.inlineStyle(“宽度”)){
//它有一个“宽度”属性!
}
更新
这是一个非常非常简短的版本。我意识到prop(“style”)返回的是一个对象,而不是字符串,并且该对象的属性对应于可用的样式属性。所以你可以这样做:
(函数($){
$.fn.inlineStyle=函数(prop){
返回此.prop(“样式”)[$.camelCase(prop)];
};
}(jQuery));
您可能希望使用自定义的camelCase函数替换$.camelCase,因为jQuery函数似乎没有文档记录,可能不值得依赖。我只是在这里用它,因为它比较短
这是一个有效的例子。注意,在这种情况下,如果在元素上找不到样式,则返回值将是空字符串。它的计算结果仍然是false,因此上面的if语句应该仍然有效