6

別の div にクラスがある場合、div を非表示にする必要があります。

ここに非常に基本的な例を作成しまし

「クリック」という単語が..よく..クリックされたときに非表示にするために、下部のdivが必要です。真ん中の div にクラスを追加するのは問題ありませんが、hasClass()うまくいきませんか?

注:構造はこのようにする必要があります。「クリック」がクリックされた場合は、中央の div を変更 (クラスを追加しますか?) し、中央の div に基づいて下部の div を操作します。この設定では、「CLICKがクリックされた場合、一番下のdivをslideUp()する」だけではできません。

また、「OK」または「キャンセル」をクリックすると、中央の div にクラスがなくなるため、元に戻ります。それが私がここで働くことができる方法なら、ハハ。

4

6 に答える 6

4

ステートメントは関数の外にifあるため、スクリプトがロードされた後に呼び出される理由はありません。

この fiddle を参照してください。それがあなたが望むものだと思います。

于 2012-10-26T20:06:51.700 に答える
2

これは、スクリプトが読み込まれるときに一度だけ呼び出されます。.click(...)ハンドラーで呼び出されることを確認する必要があります。

if($('#timestampdiv').hasClass('hidepub')) {
    $('#major-publishing-actions').slideUp('slow');
}
于 2012-10-26T20:03:29.590 に答える
2

if他の人が述べたように、すべてのクリック イベント ハンドラーを呼び出す必要はありません。内部にステートメントを含むカスタム関数を作成し、ifすべてのクリック ハンドラーで呼び出します。

このフィドルをチェックしてください

于 2012-10-26T20:17:53.597 に答える
1

クラスを DOM 要素に追加すると、要素が適切に非表示になります。

$('.element').click(function()
{
    $('.thisElement').addClass('hidepub');
    if($('.thisElement').hasClass('hidepub')) {
         $('.thisElement').hide();
    }
});
于 2012-10-26T20:02:15.257 に答える
0

それらをすべて 1 つの関数に組み合わせることができます - そして、そのチェックをクリック関数内に配置したい

toggleClassを使用して条件を渡すことで、addclass removeclass を減らすことができます。

$('a.edit-timestamp,a.save-timestamp,a.cancel-timestamp').click(function() {
    var $tsdiv = $("#timestampdiv");
    // add class showpub if edit is clicked
    $tsdiv.toggleClass('showpub',$(this).hasClass('edit-timestamp'));
    // add class hidepub only if it wasn't edit that was clicked
    $tsdiv.toggleClass('hidepub',!$(this).hasClass('edit-timestamp'));  

    // then do your toggle                            
    if ($tsdiv.hasClass('hidepub')) {
        $('#major-publishing-actions').slideUp('slow');
    }else{
        $('#major-publishing-actions').slideDown('slow');
    }
});

http://jsfiddle.net/JPcge/

toggleClass() メソッドに渡されたロジックを交換することで、逆にすることができます

于 2012-10-26T20:16:34.803 に答える