2011-06-17 153 views
2

我是一個總的jQuery新手(很好的網絡編碼新手來到這一點),並且很高興你可以輕鬆地做到這一點。我完全堅持這一點,但會很感激任何幫助。jQuery - 遍歷隱藏的li元素

我有一個ul與顏色色板的列表。然後我通過顯示和隱藏來過濾這些內容。當懸停在一個樣本上時,我需要更改可見的下一個兄弟樣本的Class。這實現了它,直到我隱瞞什麼:

$('+ li', this).toggleClass('swatchroll-sister'); 

因爲一旦東西隱藏這些然後更改類的隱藏要素,而不是下一個可見一個本

$(this).next().toggleClass('swatchroll-sister'); 

但是確實。我認爲:可見選擇器是我需要的,但我試圖將它放在任何地方,並且無法使其工作。我試過的一些東西:

$('+ li:visible', this).next().toggleClass('swatchroll-sister'); 
$(this).next('li:visible').toggleClass('swatchroll-sister'); 
$('+ li', this).toggleClass('swatchroll-sister'); 
$('+ li', this).('item:visible').toggleClass('swatchroll-sister'); 

所以我的問題可能是「我在哪裏放:可見選擇器?」但也許這是開始的錯誤方法?感謝任何指針。

+0

你可以發表[JS小提琴演示](http://jsfiddle.net/)? –

回答

3

沒有看到你確切的代碼,我只能建議是這樣:

$('li').click(
    function(){ 
     var i = $(this).index('li:visible'); 
     var nextVisible = $(this).closest('ul').find('li:visible').eq(i+1); 
     $(nextVisible).addClass('classNameToAdd'); 
    }); 

JS Fiddle demo

注意選擇器傳遞給index()方法,該方法在選擇器返回的元素中找到當前元素的索引,在這種情況下爲li:visible

參考文獻:

+0

謝謝大衛 - 工作!我其實對此非常滿意,因爲這不是我錯過的愚蠢。我不會在一百萬年內達到這一點,但可以遵循邏輯。我可能剛剛瞭解了10件事情。乾杯。 – hmon

+0

如果這解決了您的問題,我當然會感謝您接受此答案(使用左側的投票數下方的勾號)。如果您還有其他需要幫助的地方(與上述問題相關),請隨時留下評論。 :) –