繁体   English   中英

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

[英]remove class from all other list items

我从其他人那里得到了帮助,但是他们的回答有点过分,以至于无法帮助我...关于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);
     });
});

我认为这很简单:

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

您无需计算已有项目的类,只需将其从所有项目中删除,然后将其重新添加到已单击的项目即可。

编辑:这应该消除闪烁。

如果您指的是人物缩图,则它们对我的效果很好。 尽管某些菜单项不起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM