2012-01-22 87 views
0
我使用的代码

每次显示阵列中的3项以下,只显示阵列中的前3项为默认现在如何我点击按钮

//Hides all but first 3 items in the array 
@$('.question_container')[3..-1].hide() 

,我想显示下一个当我点击按钮时数组中的3个项目,以及当我再次点击按钮时(以及重复)随后的3个项目。

目前,我只能够证明用下面的代码

showMoreQuestions: (e) -> 
    e.preventDefault() 
    @$('.question_container')[3..-1].show() 
    false 

在阵列中的单击所有剩余的项目如何修改上面的代码,这样我将只显示3项,当我点击我的按钮?

+0

那是什么语言? (你有没有在你的问题上忘记标签?) – nnnnnn

+0

@nnnnnn看起来像使用jQuery的C,Pseudo和Javascript的组合^^; –

+0

@nnnnnn我相信这是coffeescript –

回答

1

我在这里猜测,但如果你只是选择了隐藏的那些,你理论上应该能够每次显示前3个并使其工作。

showMoreQuestions: (e) -> 
    e.preventDefault() 
    @$('.question_container:hidden')[0..2].show() 
    false 
1

我不知道你在寻找什么行为,但也许这样的事情会做的伎俩:

showMoreQuestions: (e) -> 
    e.preventDefault() 
    first = @$('.question_container:visible').length - 1 
    @$('.question_container')[first .. first+3].show() 
    false 

你只需要看看有多少是当前可见并使用它为show构建切片。每当您拨打showMoreQuestions时,会再显示三次。

演示:http://jsfiddle.net/ambiguous/Ybz8h/

如果你想一次只显示了三种(而不是揭示三个在时刻),然后是这样的:

showMoreQuestions: (e) -> 
    @offset ?= 3 
    e.preventDefault() 
    $('.question_container')[@offset - 3 .. @offset ].hide() 
    $('.question_container')[@offset  .. @offset + 2].show() 
    @offset += 3 
    false 

演示:http://jsfiddle.net/ambiguous/r8Hhb/