0

继续这个链接上的问题,我想在 test.html 中添加一些功能
事件触发器是“单击”任何 <p class=""> 标记。单击后,我希望那个特定的 <p> 消失(这很简单),但我也想要那个

  1. 如果三个中的一个或两个 <p> 被隐藏,则“Hide 'em”按钮应该与“Show 'em”一起“显示”但是
  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 回答