当前位置: 首页 > 面试题库 >

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

段干茂实
2023-03-14
问题内容

我需要检查元素是否具有定义的CSS属性,但是使用jQuery.css()函数时遇到了一些麻烦。

我要寻找的属性是宽度。

如果该元素没有定义的宽度,请尝试以下操作:

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

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


问题答案:

这是我放在一起的一个非常简单(可能需要改进)的插件,它将为您提供内联样式属性的值(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");

这是一个有效的例子。

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

由于undefined在找不到该样式属性时它会返回,因此可以在如下情况下使用它:

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用自定义的驼峰函数来代替对的使用,因为jQuery似乎没有文档记录,可能不好依赖。我只是在这里用它,因为它更短。

这是一个可行的例子。请注意,在这种情况下,如果在元素上找不到样式,则返回值将为空字符串。该结果仍将为false,因此上述ifhtml" target="_blank">声明仍然有效。



 类似资料:
  • 问题内容: 我有一个div: 有什么方法可以检查某些元素: 具有特定的类(在我的情况下为“测试”)。 或者,是否有方法检查en元素是否具有某种样式?在此示例中,我想知道元素是否具有“ ”。 非常感谢你! 问题答案:

  • 问题内容: 如何检查seleniumWeb元素是否包含特定的CSS类。 我有这个html li元素 如您所见,在class属性内部有一个活动类。 我的问题是我有这个元素,我想根据class属性是否具有其他“ active”值进行检查,这是比使用xpath更优雅的解决方案。 我怎样才能做到这一点? 问题答案: 鉴于您已经找到了您的元素,并且您想检查class属性内的某个类: 正如@aurelius正

  • 如果元素具有指定的样式类,则返回 true ;否则返回 false 。 使用 element.classList.contains() 检查元素是否具有指定的样式类。 const hasClass = (el, className) => el.classList.contains(className); hasClass(document.querySelector('p.special'),

  • 问题内容: 如何检查对象在JavaScript中是否具有特定属性? 考虑: 那是最好的方法吗? 问题答案: 我对所给出的答案感到困惑-他们中的大多数都是完全错误的。当然,您可以拥有具有未定义,空值或假值的对象属性。因此,简单地将属性检查减少到甚至更糟,将给您完全误导的结果。 这取决于您要查找的内容。如果您想知道一个对象是否物理上包含一个属性(并且它不是来自原型链的某个地方),那么您就可以这样做。所

  • 问题内容: 请考虑以下代码: 如何选择具有属性的所有标签? 谢谢 问题答案: 使用“具有属性”选择器: 或选择一个该属性具有特定值的属性: “属性值起始于”,“属性值包含”等还有其他选择器。

  • 问题内容: 我正在使用jQuery,以查看是否有一种简单的方法来确定该元素是否具有与之关联的特定CSS类。 我有该元素的ID,以及我要寻找的CSS类。我只需要能够在if语句中根据元素上该类的存在进行比较。 问题答案: 使用方法: 要么 该参数(显然)是一个字符串,代表您要检查的类,并且返回一个布尔值(因此它不像大多数jQuery方法一样支持链接)。 注意: 如果传递包含空格的参数,则它将与集合的元