6

我的页面中有很多表格。某些表具有内联定义的 Width 属性 -

style="width:100%; ..."

我需要得到所有这些表。我试过

$('.Forum_Container table').each(function () {
    var $this = $(this);
    if ($this.style != undefined) {
        if ($this.style.width == '100%') {
            ...
        }
    } else {
        ...
    }
});

但 $this.style 始终未定义。什么会导致这个问题?

4

6 回答 6

6

当您这样做时,$(this)您正在创建一个包含对该 DOM 元素的引用的 jQuery 对象。该style属性是 DOM 元素本身的属性,而不是 jQuery 对象,因此尝试访问它是行不通的(因为它未定义的)。

要么this直接使用(实际的 DOM 节点) - 即this.style.width- 要么使用 jQuery 提供的函数来访问您需要的信息。

于 2013-01-17T12:45:53.337 回答
4

jQuery 必须.css()获取元素样式属性:

if ($this.css("width") == '100%') {
    ...
} else {
    ...
}

如果出于某种原因您想要原始样式,您可以从 DOM 元素本身获取它,而不是包装它的 jQuery 对象:

if (this.style != undefined) {
    if (this.style.width == '100%') {
        ...
    }
} else {
    ...
}

this将为您提供“原始”元素。

于 2013-01-17T12:45:33.620 回答
3

$this.prop('style').width将在不使用原始元素的情况下工作。

我试图确定在早期的 javascript 中是否将边距设置为“auto”,$this.prop('style').margin并将返回带有单词“auto”的原始边距值,而$this.css('margin')返回计算值。

于 2013-02-04T18:57:51.547 回答
2

“样式”不是 jQuery 方法。

“attr”或“prop”是你所追求的

于 2013-01-17T12:45:45.557 回答
1

您正在检查jQuery objectstyle的属性,而不是 DOM 元素。您需要将 jQuery 对象转换为 DOM 元素,如下所示:

$('.Forum_Container table').each(function () {
    var $this = $(this),
        this_style = this.style;
    if (this_style != undefined) {
        if (this_style.width == '100%') {
            ...
        }
    } else {
        ...
    }
});

或者,如果您使用 jQuery,为什么不使用该.css()方法?

于 2013-01-17T12:45:51.190 回答
0

使用css()功能:

$this.css('width')

在你的if声明中:

$this.hasAttr('style')
于 2013-01-17T12:45:59.433 回答