jQuery检查元素是否具有内联定义的特定样式属性

前端之家收集整理的这篇文章主要介绍了jQuery检查元素是否具有内联定义的特定样式属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要检查一个元素是否有一个定义的css属性给它,但我有一些麻烦使用jQuery.css()函数

我要找的属性是宽度。

如果元素没有定义的宽度,我试试这个:

if(base.$element.css('width') !== 'undefined')

我得到浏览器的计算宽度。

解决方法

这里有一个非常简单的(可能需要改进)插件,我抛出一起,将获得一个内联样式属性的值(如果没有找到属性返回未定义):
​(function ($) {
    $.fn.inlineStyle = function (prop) {
         var styles = this.attr("style"),value;
         styles && styles.split(";").forEach(function (e) {
             var style = e.split(":");
             if ($.trim(style[0]) === prop) {
                 value = style[1];           
             }                    
         });   
         return value;
    };
}(jQuery));

你可以这样调用

//Returns value of "width" property or `undefined`
var width = $("#someElem").inlineStyle("width");

这是一个working example

请注意,它只返回匹配集中第一个元素的值。

因为当未找到该样式属性时,它返回未定义,所以可以在您的情况下使用它,如下所示:

if (base.$element.inlineStyle("width")) {
    // It has a `width` property!
}

更新

这里有一个非常简短的版本。我意识到prop(“style”)返回一个对象,而不是一个字符串,该对象的属性对应于可用的样式属性。所以你可以这样做:

(function ($) {
    $.fn.inlineStyle = function (prop) {
        return this.prop("style")[$.camelCase(prop)];
    };
}(jQuery));

你可能想用一个自定义camelcase函数替换$ .camelCase的使用,因为jQuery一个似乎是无证的,可能不好靠。我只是在这里使用它,因为它更短。

这是一个working example的那一个。注意,在这种情况下,如果在元素上找不到样式,返回值将是空字符串。这仍然会评估为false,所以上面的if语句仍然应该工作。

猜你在找的jQuery相关文章