3

メッセージごとに異なるdivを持つモーダルポップアップがあります。各divを非表示にして、表示する必要があるものだけを表示したいと思います。各dividを書き出して非表示に設定する代わりに、ループを実行したかったので、divをULリスト内に配置しました。しかし、そのULリスト内のdivだけを非表示にする方法がわからないようです。

$("#panels li").each(function (i) {
        $('div').toggle();
    });

<ul id="panels">
        <li><div id="dvError" class="hiddencol">this is div 1</div></li>
        <li><div id="dvconfirm" class="hiddencol">this is div 2</div></li>
</ul>

何らかの理由でこれを行うと非表示になりますが、ページ上のすべてのdivが非表示になります:(

4

6 に答える 6

7

あなたはただすることができます

$("#panels").find('div').toggle();

また

$("#panels div").toggle();

またはループを維持したい場合

$("#panels li").each(function (i) {
    $(this).find('div').toggle();
});

$('div').toggle();<-これにより、ページ上のすべてのdivが切り替わります

于 2012-09-05T15:02:14.480 に答える
0

適切なdivを選択し、それらを操作します。

$("#panels li div").each(function (i) {
   // Do some other things on them here... with this context for the current div
   $(this).toggle();
});

編集:

と同じ

$("#panels li div").toggle();
于 2012-09-05T15:02:29.937 に答える
0

これを試して

$("#panels li").each(function (i) {
    $(this).find('div').toggle();
});
于 2012-09-05T15:03:28.050 に答える
0

理由は簡単です

$('div').toggle();

最初の選択とは関係ありません。ページ上のすべてのdivを検索するだけです。試す

$('#panels * div').toggle();

代わりは

于 2012-09-05T15:03:34.310 に答える
0

ulリスト内のすべてのdivを非表示にする場合は、セレクターの問題です。要素を選択するためにループを作成する必要はありません。jQUeryでは、セレクターを作成すると、条件を満たすすべての要素が繰り返されて選択されるためです。

   $('ul#panels div').hide();
    $('ul div').hide();
    $('ul > li div').hide();

これら3つのセレクターはすべて同じことを実行します。最初と2番目のセレクターはほとんど同じです。彼らはulの下にあるすべてのdivを選択します。3番目のセレクターは、直接の子、つまりこの場合はliのみを選択し、その中のdivのみを非表示にするためです。

このフィドルもチェックしてくださいhttp://jsfiddle.net/sushanth009/P3xe6/1/

于 2012-09-05T15:24:03.823 に答える
0

これを試して。今、あなたは合格しid、必要なものだけを表示することができますdiv

$(document).ready(function(){    
    showOnlyMe('dvError');
});

function showOnlyMe(myID){
    $("#panels li div").each(function () {    
        if($(this).attr('id') != myID) {
            $(this).hide();
        }
    });
}
于 2012-09-05T15:52:37.253 に答える