所以我有一些带有“nieuwitem”类的div,根据他们在工作流程中的位置(左,中,右),他们分别有一个上瘾的类bar1,bar2,bar3。
当我点击.nieuwitem时,它会将点击的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>
答案 0 :(得分:3)
这是因为您正在克隆元素而不是元素的数据和事件(即点击事件。
如果你改变:
var dis = $(this).clone();
到
var dis = $(this).clone(true);
它应该工作; check the docs。你的代码中还有一些其他特殊的东西(比如多次添加同一个类)但是你问过上面的问题是答案
P.S。欢迎来到SO:D