6

私のページにはたくさんのテーブルがあります。一部のテーブルには、幅プロパティがインラインで定義されています -

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プロパティは、jQuery オブジェクトではなく、DOM 要素自体のプロパティであるため、アクセスしようとしても機能しません (未定義であるため)

this(実際のDOMノード)を直接使用するか、つまりjQuerythis.style.widthが提供する関数を使用して、必要な情報にアクセスします。

于 2013-01-17T12:45:53.337 に答える
4

jQuery は.css()要素のスタイル プロパティを取得する必要があります。

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

何らかの理由で未加工のスタイルが必要な場合は、それをラップする jQuery オブジェクトではなく、DOM 要素自体から取得できます。

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

this「生の」要素を提供します。

于 2013-01-17T12:45:33.620 に答える
3

$this.prop('style').widthraw 要素を使用しなくても機能します。

以前のJavaScriptでマージンが「自動」に設定されているかどうかを判断しようとしていましたが、$this.prop('style').margin「自動」という単語を含む生のマージン値を$this.css('margin')返しますが、計算された値を返します。

于 2013-02-04T18:57:51.547 に答える
2

「スタイル」はjQueryメソッドではありません。

「attr」または「prop」はあなたが求めているものです

于 2013-01-17T12:45:45.557 に答える
1

DOM要素ではなく、jQueryオブジェクトstyleのプロパティをチェックしています。次のように、jQuery オブジェクトを DOM 要素に変換する必要があります。

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

.css()あるいは、jQuery を使用している場合は、メソッドを使用してみませんか?

于 2013-01-17T12:45:51.190 に答える
0

css()関数を使用します。

$this.css('width')

そしてあなたのif声明では:

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