13

div が表示されているかどうかを判断し、その変数を使用してさまざまなプロセスを実行する JavaScript 関数があります。要素の表示をなしとブロックの間で変更することで、要素の可視性を正常に切り替えることができます。しかし、私はこの値を保存することはできません...

要素の表示属性値を取得して、要素 ID が表示されているかどうかを確認しようとしましたが、どちらも機能しませんでした。.getAttribute を試すと、常に null が返されます。id が定義されており、表示属性があることがわかっているため、理由はわかりません。

私が試した2つの異なる方法のコードは次のとおりです。

var myvar = $("#mydivID").is(":visible");
var myvar = document.getElementById("mydivID").getAttribute("display");

ご指導やご支援をいただければ幸いです。

4

5 に答える 5

22

このようにしてみてください:

$(function () {
    // Handler for .ready() called.
    if ($("#mydivID").is(":visible")) {
        alert('Element is visible');
    }
});

フィドル

head次のように、タグ内に jQuery ファイルを必ず含めてください。

<head>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
于 2013-04-27T18:23:56.373 に答える
12

これをJavaScriptの方法でのみ実行したい場合は、試してみてください

window.getComputedStyle(document.getElementById("mydivID"),null).getPropertyValue('display')
于 2016-09-26T21:53:27.000 に答える
11

表示は属性ではなく、属性内の CSS プロパティstyleです。

あなたが探しているかもしれません

var myvar = document.getElementById("mydivID").style.display;

また

var myvar = $("#mydivID").css('display');
于 2013-04-27T18:23:53.777 に答える
8

.is(":visible")jQuery で何が行われているか見てみましょう。

リンクは次のとおりです: https://github.com/jquery/jquery/blob/master/src/css.js#L529

return !jQuery.expr.filters.hidden( elem );

どこ

jQuery.expr.filters.hidden = function( elem ) {
    // Support: Opera <= 12.12
    // Opera reports offsetWidths and offsetHeights less than zero on some elements
    return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
};

したがって、要素のオフセット幅と高さを確認しているだけです。

つまり、jQuery が要素が非表示かどうかをチェックするとき (つまり、「トグル」イベントをトリガーするときなど)、display プロパティとdom 内のその存在をチェックします。https://github.com/jquery/jquery/blob/master/src/css.js#L43

于 2013-04-27T18:35:14.370 に答える