从所有其他列表项中删除类

时间:2010-02-11 11:06:31

标签: javascript jquery

我已经得到了其他人的帮助,但是他们的回复有点过于宽泛而无法帮助我...当涉及到javascript时我是个新手,所以我无法完全理解他们的答案(我在过去3天内尝试过的所有内容都没有用。)工作网站在这里:http://www.studioimbrue.com/beta问题是,使用缩略图,一旦点击它,就会正确添加.selected类,但点击时另一方面,它无法从任何其他缩略图中剥离.selected类。如果你能纠正我所拥有的令人惊奇的代码,如果你想解释我的错误,那么就去吧!

$(document).ready(function(){ 
    var activeOpacity   = 1.0,
        inactiveOpacity = 0.6,
        fadeTime = 100,
        clickedClass = "selected",
        thumbs = "#list li";

    $(thumbs).fadeTo(1, inactiveOpacity);

    $(thumbs).hover(
        function(){
            $(this).fadeTo(fadeTime, activeOpacity);
        },
        function(){
            // Only fade out if the user hasn't clicked the thumb
            if(!$(this).hasClass(clickedClass)) {
                $(this).fadeTo(fadeTime, inactiveOpacity);
            }
        });
     $(thumbs).click(function() {
         // Remove selected class from any elements other than this
         var previous = $(thumbs+'.'+clickedClass).eq();
         var clicked = $(this);
         if(clicked !== previous) {
             previous.removeClass(clickedClass);
         }
         clicked.addClass(clickedClass).fadeTo(fadeTime, activeOpacity);
     });
});

2 个答案:

答案 0 :(得分:2)

我认为这很简单:

$(thumbs).click(function() {
    var li = $(this);
    var alreadySelected = li.hasClass('selected');

    // Remove selected class from any elements other than this
    $('#list li').removeClass(clickedClass).fadeTo(fadeTime, inactiveOpacity);

    li.addClass(clickedClass).fadeTo(((alreadySelected) ? 0 : fadeTime), activeOpacity);
});

您不需要计算已经拥有该类的项目,只需将其从所有项目中删除,然后将其重新添加到已单击的项目中。

编辑:这应该删除闪烁。

答案 1 :(得分:0)

如果你指的是这些人的缩略图,他们对我很好。虽然有些菜单项不起作用。

相关问题