2012-12-26 257 views
0

因此,我有一些div类与“nieuwitem”,并根据他们在工作流程上的位置(左,中,右),他们分别有一个add1类bar1,bar2,bar3。第二次点击不工作jquery

当我点击.nieuwitem时,它会将点击的div更改为绝对div并增加宽度以覆盖其他项目,并添加类“activenews”。它还在点击的div的位置上添加了一个无形的div,以保持剩余边距(所以其他项目不会混杂在一起)。

当我点击另一个div或绝对div时,绝对div(class =“activenews”)通过删除绝对div并使隐形div(invisitem)回到可见状态变回正常。

但是,当我尝试点击第三次设置回正常的div时,因此它再次展开,它不起作用。我的意思是,没有什么是触发的。甚至没有“警报('嗨');”。

在此先感谢

<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> 

回答

3

这是因为你被克隆的元素,但不是元素的数据和事件(即click事件

如果更改:

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

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

它应该工作; check the docs。你的代码中还有其他一些奇怪的东西(比如多次添加同一个类),但是你问上述问题的答案是:

p.s.欢迎来到SO:D

+1

检查多个类的文字'class'属性也是不安全的。不能保证它包含那些精确顺序的类。最好使用['.hasClass()'](http://api.jquery.com/hasClass/)。 – JJJ

+0

@Juhana,这是一个很好的观点。更好地评论这个问题,而不是这个未被接受的答案,虽然 – lnrbob

+0

@Stvdd不担心这两个问题:) – lnrbob