5

私はjQueryが初めてなので、すみません!

MySQL データベースからブログを返す PHP 関数があります。見出し、サブタイトル、およびコンテンツを返します。

$result = getData();  
            while($row = mysqli_fetch_array($result))
            {
                extract($row);
                ?>
                    <div class="headline"><?php echo $headline ?></div>
                    <div class="subtitle"><?php echo $subTitle ?></div>
                    <div class="content"><?php echo $content ?></div>
                    <?php
            } 

これまでに 3 つのエントリが表示されています。nextUntil メソッドとコンテンツの .slideToggle を使用して見出しをクリックすると、コンテンツを非表示にして展開する jQuery があります。

    $(".content").hide();

$(".headline").click(function(){
    $(this).nextUntil(".headline").slideToggle(500);  
}); 

私の問題は、サブタイトルを含む次の見出しまで、すべてのdivでslideToggleが実行されることです。そのため、見出しをクリックするとコンテンツは表示されますが、見出しは消えます。

3 つすべてのコンテンツ div がスライドして表示されるため、スライドするコンテンツを選択することはできません。

見出しとコンテンツの間のサブタイトルを除外する方法はありますか?

前もって感謝します!

4

2 に答える 2

2

私があなたを正しく理解していると仮定すると、あなたは次の.content要素を隠したいと思います。そうであれば、次の兄弟のセットから、そのセレクターに一致する最初の要素を取得できます。

$(this).nextAll(".content").eq(0).slideToggle(500);

または、あなたが提案するようにそれを行うために、あなたは使用することができますnot

$(this).nextUntil(".headline").not(".subtitle").slideToggle(500);

これが最初のバージョンの実例です。

于 2012-06-04T10:23:40.447 に答える
1

このように質問を理解したので、私は推測をしているので、notSelector .not()を試すことができます

$(this).nextUntil(".headline").not(".subtitle").slideToggle(500);  
于 2012-06-04T10:23:50.093 に答える