1

こんにちは、誰かがこれを手伝ってくれることを願っています:

私が基本的に望んでいるのは、div イントロテキストが空の場合、div を非表示にして、親 div (grid-6) を class=grid-12 に変更する必要があることです。私はこの仕事を成し遂げることができないようです!これが私が持っているものです(サンプルコード):

HTML

<div class=header>
    <img src="[[DTIMAGE]]" alt="inuit.css logo">
</div>
<h1 style="font-size:10px;">[[TITLE]]</h1>
<div class=grids>
    <div class=grid-12>
        [[FULLTEXT]]
    </div><!-- /grid-6 -->
</div><!-- /grids -->
<hr>
<div class=grids>
    <div class=grid-6>
        [[FULLTEXT]]
    </div><!-- /grid-6 -->
    <div class=grid-6>
        <div class="introtext"></div>
    </div><!-- /grid-6 -->
</div><!-- /grids -->
<hr>
<div class=footer>
    [[FOOTER]]
</div>

スクリプト[ jQuery 1.7.2 を使用]

$(document).ready(function(){
    if ($(".introtext").text() === ""){
        $(".introtext").hide();
    }
});

前もって感謝します

4

2 に答える 2

0

私が正しく理解していれば、次のことをお勧めします。

$('.introtext').each(
    function() {
        if (!$(this).text()) {
            $(this).hide().parent().toggleClass('grid-6 grid-12');
        }
    });​

JS フィドルのデモ

OPからのコメントに記載されているように、上記のコードは要件の変更を考慮して作り直されました。

私は完全に間違っています(これを機能させるには掘り下げすぎます)実際には、divのイントロテキストが空の場合、div grid-6( [[FULLTEXT]] がある場所)は div=grid-12 に変更する必要があります

$('.introtext').each(
    function() {
        if (!$(this).text()) {
            $(this).hide().parent().prev().toggleClass('grid-6 grid-12');
        }
    });​

JS フィドルのデモ

上記を再評価:

$('.grid-6').filter(
    function(){
        var introtextEl = $(this).next('.grid-6').find('.introtext');
        return introtextEl.length && !introtextEl.text()
    }).toggleClass('grid-6 grid-12');

JS フィドルのデモ

上記のコード (最新のコード ブロック) は、セレクターによって返されたすべての要素を効果的に調べ、2 つの条件に基づいてそれらをフィルター処理しgrid-6ますintrotext。配列、したがって.lengthチェック)、および 2 番目: 見つかった.introtext要素にテキスト コンテンツがない場合。

これらの条件が両方とも true の場合、現在評価されている要素 (および条件が true であるすべての要素) が返され、toggleClass()メソッドによって処理されます。

参考文献:

于 2012-08-06T21:24:47.720 に答える
0

:emptyセレクターを使用できます:

if ( $(".introtext").is(':empty') ){
      $(".introtext").hide().parent().attr('class', 'grid-12')
}

のクラスを持つ要素が複数ある場合は、次のメソッドintrotextを使用できます。each

$('.introtext').each(function(){
    if ( $(this).is(':empty') ){
          $(this).hide().parent().attr('class', 'grid-12')
    }
})

$('.girds div').each(function(){
    if ( $(this).text() == '[[FULLTEXT]]'){
          $(this).attr('class', 'grid-12')
    }
})
于 2012-08-06T21:24:52.510 に答える