2012-01-22 125 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/