2

私はjQueryを初めて使用しますが、「innerHTML」がnullの場合にdivを非表示にするコード設定を取得しようとしています. 以下のコードを使用してみました。しかし、うまくいきません!私のせいはどこですか??

if (($("#php-errors").html).length) {
    $("#php-errors").css("display", "block");
}
else {
    $("#php-errors").css("display", "none");
}
4

7 に答える 7

3

1 行で、.show()および.hide()メソッドを使用する:

var hasCont = $("#php-errors").contents().length ? $("#php-errors").show() : $("#php-errors").hide();

次のような三項演算子を使用します。

  • (定義変数)ステートメント ?
  • ステートメントが true の場合の アクション:
  • ステートメントが false の場合の アクション

デモ JSFIDDLE


要素を var 内にキャッシュし、それvar $elを と呼び、次のように使用することをお勧めします。

var $el = $("#php-errors");
var hasCont = $el.contents().length ? $el.show() : $el.hide();

はるかに読みやすく、マイクロ処理時間を節約できます;)しかし、関数間の再利用性の点で本当に役立ちます(関数の外で定義されている場合)。

于 2012-05-06T16:05:56.450 に答える
3
if ($("#php-errors").html().length) {
    $("#php-errors").css("display", "block");
}
else {
    $("#php-errors").css("display", "none");
}

修正:

($("#php-errors").html).lengthする必要があります$("#php-errors").html().length

于 2012-05-06T15:58:37.940 に答える
2

このようにコードを少しきれいにすることができます。

また、innerHTMLプロパティを三項式の条件部分として使用します。コンテンツがある場合は返されて「ブロック」が設定され、ない場合は「なし」が設定されます。

$("#php-errors").css("display", function() {
    return this.innerHTML ? "block" : "none";
});

http://jsfiddle.net/WKWNc/2/


アップデート:

これがページの読み込み時にのみ実行される場合は、最初に「ブロック」に設定してからこれを実行できます。

$("#php-errors:empty").hide();

http://jsfiddle.net/WKWNc/1/

またはその逆で、「なし」に設定し、空でない場合は表示します。

$("#php-errors:not(:empty)").show();

http://jsfiddle.net/WKWNc/

于 2012-05-06T16:01:59.560 に答える
0

私はこのようなことをします:

var $php_errors = $("#php-errors");

if ($php_errors.is(":empty")) {
    $php_errors.hide()
}
else {
    $php_errors.show();
}

それが役に立てば幸い

于 2012-05-06T16:21:24.277 に答える
0

あなたの場合、あなたはただ欲しいようです:

$("#php-errors").toggle();

blockディスプレイをどちらかに設定したい場合やnone、まだ何も設定されていない場合は見当たりません。

あなたのロジックは冗長ではありませんか?

于 2012-05-06T16:00:43.007 に答える
0

私はあなたが比較を逃したと思う、これを試してみてください

if ($("#php-errors").html() == "") {
    $("#php-errors").css("display", "block");
}
else {
    $("#php-errors").css("display", "none");
}
于 2012-05-06T16:01:35.850 に答える