【问题标题】:Removing class from two elements with jQuery使用 jQuery 从两个元素中删除类
【发布时间】:2013-05-09 23:30:07
【问题描述】:

我的动画有一个奇怪的(又一次)问题。

简而言之,我有一张图片,当我点击它时,会出现两个 div,并且有一个关闭按钮可以删除这些 div。但是当我点击那个按钮时,只有一个 div 消失了。

两个新的 div 有一个调试类,当我点击按钮时我通常会删除它

$('#gallery').on('click', 'li', function(e) {

        // To display the animations with position
        var $this = $(this),
            dataItem = $this.data('item');

        // Left animation
        if ( dataItem == 1 ) {
            console.log( $this );

            $this
                .addClass('active')
                .find('.info-texte')
                    .removeClass('hidden')
                    .addClass('debug');

            // When animation is ended add the second part
            $this.find('.debug').on('animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function() {
                $this.find('.info-btn')
                    .removeClass('hidden')
                    .addClass('debug');
            });
        }

        // Supprime le href event
        e.preventDefault();
    });

    $('.btn-close').on('click', function() {
        var $this = $(this);

        $this
            .parents()
            .eq(3)
                .removeClass('active')
                .find('.info-texte, .info-btn')
                    .removeClass('debug')
                    .addClass('hidden');
    });

您可以在此处查看实际操作:http://www.jeremybarbet.com/effect/bug.html

【问题讨论】:

  • 我没有看到关闭按钮。可以发jsFiddle吗?
  • 这是因为您的 this.parents().eq(3) 没有针对正确的 div - 如果您单击按钮,活动类仍然保留在我猜您要删除的目标上类来自
  • @MarioDeSchaepmeester 有在线版,点击图片后出现关闭按钮。
  • @Pete 但是,当我点击关闭按钮时,右侧的 div 消失了,活动的类也被删除了,只有 .info-texte 总是在这里。
  • 在上面的示例中,如果您检查元素 - li,单击按钮后活动类仍然存在 - 为什么不尝试使用 .parents('li.active')

标签: javascript jquery css css-animations


【解决方案1】:

根据我的 cmets,您的 $this.parents().eq(3) 定位错误的元素

如果你把它改成$this.parents('li.active')

你的两个 div 都应该消失:

http://jsfiddle.net/TDsCT/

编辑

仔细检查是因为你的点击:

$('#gallery').on('click', 'li'

当您单击按钮时也会触发此事件,因为该按钮位于您的 #gallery li 中。我更改了您的代码,所以您点击图片打开,然后点击您的按钮关闭:

http://jsfiddle.net/TDsCT/5/

【讨论】:

  • 我只取了你的部分代码,并添加到其余的代码中。我认为添加动画类的代码部分与删除此动画并隐藏这两个div的代码部分之间存在冲突。 jsfiddle.net/TDsCT/1
  • 好的,它工作得很好,非常感谢,但这是一个奇怪的问题。
【解决方案2】:

似乎表达式 $this.parents().eq(3) 没有计算出您想要的结果——左边的两个 div。也许尝试一组不同的 DOM 遍历方法? (例如 $this.parents().eq(2).prev() 和 $this.parents().eq(2),虽然这有点杂乱无章)

【讨论】:

  • 嗯,我尝试了很多方法,但没有任何效果。编辑:我对脚本进行了一些更改,当我更改 css 背景时,第一个 div 上的更改很好,但是当我尝试删除一个类并添加另一个类时,什么也没有出现。 jeremybarbet.com/effect/bug.html
猜你喜欢
  • 1970-01-01
  • 2014-10-22
  • 2011-01-04
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2011-01-10
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多