2

私は次のJSを持っています:

if ( $("#secretContent").children().length == 0) {
    $("#seemore").hide();
}​

これが私の質問を示すjsFiddleです。ID「secretContent」のdivに子/コンテンツがない場合、ID「seemore」のdivを非表示にするつもりです。

どんな助けでも大歓迎です。前もって感謝します!

4

5 に答える 5

4

> 0だから...あなたはそれをに置き換えたい== 0と思います。

于 2012-04-23T16:43:07.523 に答える
4

おそらく「より大きい」を等しいに変更したいでしょう:

if ( $("#secretContent").children().length == 0) {
    $("#seemore").hide();
}​

Vega が示唆するように、厳密には子 HTML 要素ではなく、テキスト ノードに関心がある場合はcontents()、代わりにを使用する必要がありchildrenます。

if ( $("#secretContent").contents().length == 0) {
    $("#seemore").hide();
}​

両方を示すデモを次に示します。

http://jsfiddle.net/jtbowden/NASQn/

ノート!は、 内のテキストを.contents()カウントすることに注意してくださいdiv

これ:

<div>
</div>

この:

<div> </div>

両方とも空ではないと見なされます。これは、最初に改行があり、2 番目にスペースがあり、どちらもテキスト ノードと見なされるためです。使用時に空と見なされる唯一のもの.contents()は次のとおりです。

<div></div>

これを考慮したい場合は、no をチェックしてからchildren()、残りのテキストが空白だけかどうかを確認する必要があります。

if ( $("#secretContent").children().length == 0) {
    if( $("#secretContent").text().match(/^\s*$/) ) {
        $("#seemore").hide();
    }
}

デモ: http://jsfiddle.net/jtbowden/4xtME/

于 2012-04-23T16:43:10.060 に答える
1

これはトリックを行っていますhttp://jsfiddle.net/chepe263/9Jmug/1/

if ( $("#secretContent").children().length < 1) {
    $("#seemore").hide();
}​

フィドルでは、secretContent 内に追加の div があるため、コンテンツが表示されます

于 2012-04-23T16:51:11.083 に答える
1

「> 0」を「== 0」に置き換えます

それでうまくいくはずです!

于 2012-04-23T16:46:11.163 に答える
1

テキストの内容もチェックしたい場合は、 incase.contentsの代わりに使用する必要があると思います。.childrenも に変更し>ました==。言ってみて、

if ( $("#secretContent").contents().length == 0) {
    $("#seemore").hide();
}​
于 2012-04-23T16:44:52.870 に答える