2

我是 jquery 的绝对初学者。我正在使用谷歌学习,但我不知道如何解决这个问题。

我用一个按钮连续显示 div,但是当没有更多 div 可以显示时,我想隐藏显示按钮。

这是代码:

$('#show').on('click', function() {
    if (index + 1 > max) {
        // Here, I suppose, I need to hide the button
    } else {
        if (index < max - 1) {
            index++;
            $('.container > div:eq(' + index + ')').show();
        }

在这里你可以看到这个例子

http://jsfiddle.net/vcARq/

在此先感谢并对我的英语感到抱歉;)

4

5 回答 5

1

基本上你需要在完整运行这样的功能时执行此操作

var index = -1;
var max = $('.container > div').length;
$('#show').on('click', function() {
        if (index < max - 1) {
            index++;
            $('.container > div:eq(' + index + ')').show();
        }
}, function () {
$(this).hide();
});

那应该对你有用

于 2013-01-20T11:12:03.187 回答
0

您可以通过检查每次单击按钮时是否显示最后一个 div 来做到这一点。因此,如果显示最后一个 div,它会隐藏按钮。这是代码:

    var index = -1;
var max = $('.container > div').length;
$('#show').on('click', function() {
    if (index + 1 > max) {
        // Do Nothing
    } else {
        if (index < max - 1) {
            index++;
            $('.container > div:eq(' + index + ')').show();
        }


    }
    if ($('div.hidden:last').css('display') != 'none'){
     $('#show').hide()   ;
    }
});
于 2013-01-20T11:09:59.957 回答
0

迭代索引后,检查2回调函数内部的减值.show()。这将导致预期的行为。原因-2是您的偏移量开始于-1而不是0.

var index = -1
var max = $('.container > div').length;
$('#show').on('click', function () {
    var $this = $(this);
    if (index < max) {
        index++;
        $('.container > div:eq(' + index + ')').show(0, function () {
            if (index > max - 2) {
                $this.hide();
            }
        });
    }
});

小提琴。

于 2013-01-20T11:12:22.217 回答
0

如果您是 jquery 的新手,我真的很感谢您的工作、勇敢和不错的尝试,您的代码几乎接近您想要的:

这是JSFiddle

你需要这个代码:

var index = 0;
var max = $('.container > div').length;
$('#show').on('click', function() {
        if (index < max ) {

       $('.container > div:eq(' + index+')').show();
                index++;
             if (index >= max ) 
                 $(this).hide();
        }   
});
于 2013-01-20T11:24:28.390 回答
0

我遇到你的情况(点击最大次数)只需调用 .hide()。这是我的简单建议:

var index = -1;
var max = $('.container > div').length;
$('#show').on('click', function() {
    if (--max<=0) {          //condition
        $('#show').hide();   //hide button
    } 
    index++;
    $('.container > div:eq(' + index + ')').show();
});

http://jsfiddle.net/vcARq/8/

于 2013-01-20T11:18:06.800 回答