0

このリンクでの質問の続きとして、test.htmlにいくつかの機能を追加したいと思いまし
た。イベントトリガーは、任意の<pclass="">タグを「クリック」しています。クリックした後、その特定の<p>を非表示にしたい(これはかなり簡単でした)が、それも必要です

  1. 3つのうち1つまたは2つの<p>が非表示になっている場合、[非表示]ボタンは[表示]とともに[表示]する必要があります
  2. すべての<p>が非表示になっている場合、「Hide'em」も非表示になります。
  3. すべての<p>が表示されている場合、「Show'em」は非表示になります。

私はjQueryセレクターと利用可能なセレクターのドキュメントについての知識を持ってこのことを試みましたが、私が望むものの近くには到達しませんでした。これは私が今までやってきたことです。

$('p.*').live('click', function() {
        $(this).hide('slow');
        if( $('p').is(':hidden') ) {
            $('.shower').show();
        }
        if( $('p.*').is(':hidden') ) {
            $('.hider').show();
        }

    });

ただし、このコードは、非表示になっているすべての<p>の極端な条件で選択的に切り替わるわけではありません

4

1 に答える 1

1

ここにそれを行う方法があります

var all_ps = $('p.*').length;
var hidden_ps = 0;

$('p.*').live('click', function() {
    $(this).hide('slow');
    hidden_ps++;
    updateButtons();
});
function updateButtons()
{
    $('.hider').show();
    $('.shower').show();
    if(hidden_ps == all_ps-1) {
        $('.hider').hide();
    } else if(hidden_ps == 0) {
        $('.shower').hide();
    }
}
function resetButtons()
{
    $('p.*').show();
    hidden_ps = 0;
    updateButtons()
}
于 2009-09-14T10:56:48.983 に答える