2

我是一个完全的 jQuery 新手(好吧,Web 编码新手来了),我很高兴你能如此轻松地做到这一点。不过,我完全坚持这一点,并将不胜感激。

我有一个带有颜色样本列表的 ul。然后我通过显示和隐藏来过滤这些。当悬停在一个样本上时,我需要更改下一个可见的兄弟样本的类。这实现了它,直到我隐藏任何东西:

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

和这个一样

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

然而,一旦东西被隐藏,这些就会改变隐藏元素的类,而不是下一个可见元素。我认为 :visible 选择器是我需要的,但我尝试将它放在任何地方,但无法让它工作。我尝试过的一些事情:

$('+ 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');

所以我的问题可能是“我应该把 :Visible 选择器放在哪里?” 但也许这是错误的开始方法?感谢您的任何指示。

4

1 回答 1

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 小提琴演示

请注意传递给该index()方法的选择器,该方法在选择器返回的元素中查找当前元素的索引,在本例中为li:visible.

参考:

于 2011-06-17T16:16:01.393 回答