【问题标题】:jQuery remove class when adding it to other elementsjQuery将类添加到其他元素时删除类
【发布时间】:2012-01-31 20:06:45
【问题描述】:

我在一行中有 6 张图片,第一个在页面加载时应用了一个类,该类使用 CSS3 应用 Web 转换。当其他图像悬停在同一类上时,将应用于这些图像,然后在 mouseout 时将其删除。我需要实现的最后一件事是,当其他图像悬停在第一个图像上时,将删除类,如果没有图像悬停在第一个图像上,则再次应用其类。

这是我目前所拥有的:

$(document).ready(function() {
    $("#imagePackshot li img").hover(function(){
        $(this).addClass('packshot').siblings().removeClass('packshot');
    },
    function () {
        $(this).removeClass('packshot');
    })
    .first().addClass('packshot');
});

【问题讨论】:

    标签: jquery html css


    【解决方案1】:

    您需要在删除一个类后检查是否没有其他具有“packshot”类的图像,在这种情况下将其添加到第一个。

     $(document).ready(function() {
            var activeClass = 'packshot', images = $("#gallerySlideshow li img");
            var first = images.first().addClass(activeClass);
            images.hover(function(){
                // remove the class from all images who still have it, most likely only one.
                images.filter("."+activeClass).removeClass(activeClass); 
                // add class to the element that was hovered.
                $(this).addClass(activeClass);
            },
            function () {
                // remove class from the image that was hovered out of
                $(this).removeClass(activeClass);
                // if no other images have the active class, then give it to the first image
                if(!images.filter("."+activeClass).size()){
                   first.addClass(activeClass);
                }
            })
      });
    

    编辑:

    代码使用此 html 结构,基于您发布的链接,这意味着您不能使用“兄弟姐妹”来引用下一个图像,因为图像不是 html 树中的兄弟姐妹:

    <ul id="gallerySlideshow">
        <li>
            <a href="page9.html"><img src="thumbnails/thumb9.jpg" width="158" height="236" /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    
        <li>
            <a href="page9.html"><img class="box2" src="thumbnails/thumb1.jpg" /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    
        <li>
            <a href="page9.html"><img class="box" src="thumbnails/thumb3.jpg"  /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    
    
    
        <li>
            <a href="page9.html"><img class="box1" src="thumbnails/thumb4.jpg" /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    
        <li>
            <a href="page9.html"><img class="box3" src="thumbnails/thumb5.jpg" /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    
        <li>
            <a href="page9.html"><img class="box4" src="thumbnails/thumb6.jpg" /></a>
            <ul id="noimg">
                <li>
                    <a href=""><img src="Images/more-like-this.png" /></a>
                </li>
            </ul>
        </li>
    </ul>
    

    【讨论】:

    • 嗨 ggreiner,感谢您的帮助,尽管它仍然无法按我的需要工作,如前所述,我需要在页面上加载第一个要突出显示和放大的图像(addClass),然后悬停在其余的它们被突出显示和放大,第一个被缩小和突出显示,如果没有图像悬停在第一个图像上,则返回被突出显示和放大,例如看看网页的例子。 [链接]geoffboult.co.uk/clients/jq/page5.3.html
    • 我修改了答案以反映您示例中的 html 结构
    • 非常感谢您抽出宝贵的时间,现在我需要它了。我试图找到如何向您发送 PM 表示感谢,也许看看我是否可以在您下次在城里时向您发送感谢捐赠给一些啤酒。再次感谢...
    • 效果很好,我还有另一件事需要尝试完成,图像需要有 2 行文本与每行相关联,此文本需要显示在固定的“相同位置” ' 在所有图像的中心(不像显示在每个图像旁边的工具提示)并在页面加载时显示第一个图像描述文本,就像第一个图像被突出显示然后悬停在其他图像上时文本描述对悬停图像的更改)您愿意将此作为我的付费项目吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多