0

所以我有一些带有“nieuwiitem”类的 div,根据它们在工作流程中的位置(左、中、右),它们分别有一个附加类 bar1、bar2、bar3。

当我单击 .nieuwiitem 时,它会将单击的 div 更改为绝对 div 并增加宽度以覆盖其他项目,并添加类“activenews”。它还在单击的 div 的位置添加了一个不可见的 div 以保持左边距(因此其他项目不会全部混淆)。

当我单击另一个 div 或绝对 div 时,绝对 div(带有 class="activenews")通过删除绝对 div 并使不可见 div (invisitem) 恢复为可见状态而恢复正常。

但是,当我尝试单击第三次恢复正常的 div 时,它再次展开,它不起作用。我的意思是,没有任何东西被触发。甚至没有“警报('hi');”。

提前致谢

<script>
        $('.nieuwitem').click(function(){
            alert('hi');
        var dis = $(this).clone();


        $('.activenews').remove();
        $('.invisitem').animate({opacity:1}).removeClass('invisitem').removeAttr('style');


        if($(this).attr('class') == 'nieuwitem bar1' || $(this).attr('class') == 'nieuwitem bar2'){
            var offset = $(this).offset();

            $(this).hide();
            dis.insertAfter($(this)).animate({opacity:0},500).addClass('invisitem');

            $(this).css({ height:'320', position:'absolute', 'top' : offset.top, 'left':offset.left, 'background-image':'none', 'background-color':'rgba(255,255,255,0.1)'}).addClass('activenews').hide().animate({width:'42%', 'backgroundColor':'rgba(255,255,255,0.9)'},10).fadeIn(800).addClass('activenews');

        }
        else{
            var offset = $(this).prev().offset();

            $(this).hide();
            dis.insertAfter($(this)).animate({opacity:0},500).addClass('invisitem');

            $(this).css({ height:$(this).height(), position:'absolute', 'top' : offset.top, 'left':offset.left, 'background-image':'none', 'background-color':'rgba(255,255,255,0.1)'}).addClass('activenews').hide().animate({width:'42%', 'backgroundColor':'rgba(255,255,255,0.9)'},10).fadeIn(800).addClass('activenews');

        }

        }


    );

</script>
4

1 回答 1

3

这是因为您正在克隆元素,而不是元素的数据和事件(即 click 事件。

如果你改变:

var dis = $(this).clone();

var dis = $(this).clone(true);

它应该工作;检查文档。您的代码中还有一些其他特殊的东西(例如多次添加同一个类)但是对于您上面提出的问题就是答案

ps 欢迎来到 SO :D

于 2012-12-26T13:07:19.840 回答