-2

親 div を非表示にして、子 div が非表示の場合は body にクラスを追加したいのですが、子が表示されている場合は注意が必要です

if(jQuery('#toolbar > div').is(':visible')){
    jQuery('#toolbar').slideToggle('fast');
    jQuery('body').toggleClass('body-margin');
}

私のコードで何が間違っていますか?

<div id="toolbar">
    <div class="buttons" ></div>
</div>
4

3 に答える 3

1

あなたが必要

if(!jQuery('#toolbar').children('div:visible').length){
    jQuery('#toolbar').slideToggle('fast');
    jQuery('body').toggleClass('body-margin');
}

これにより、内部に目に見える div#toolbarないかどうかがチェックされます。

于 2013-07-24T14:12:19.523 に答える
1

これを試して

if(jQuery('#toolbar > div').is(':hidden')){
  jQuery('#toolbar').slideToggle('fast');
  jQuery('body').toggleClass('body-margin');
}
于 2013-07-24T12:58:57.407 に答える
1

私があなたを正しく理解していれば、あなたのコードは逆です。ボタンdivが表示されているかどうかを確認し、アニメーションを使用して非表示にしない場合は、トグルを介してまたは直接クラスを追加します。addClass() ここでは、クラス「ボタン」を持つ子divをチェックします。

if (!jQuery('#toolbar').find('div.buttons').filter(function () {
    return $(this).is(':visible');
}).length) {
    jQuery('#toolbar').slideToggle('fast');
    jQuery('body').toggleClass('body-margin');
}
于 2013-07-24T13:16:46.417 に答える