2012-04-01 67 views
1

我刚做了一个非常简单的切换按钮。函数检查状态(一个类),并执行调整动画/重新设置状态。jquery点击切换,如果/其他情况都触发

但是,当点击时,不知怎的,这两种情况都被触发(目标div出现和消失)。只需点击一下,怎么会发生这种情况?

$('.box').live('click',function(){ 
     if ($(this).hasClass('.op')) 
     { 
     $(this).siblings('.lh').animate({ width: '0', marginLeft: '80'}, 300); 
     $(this).removeClass('.op'); 
     } else 
     { 
     $(this).siblings('.lh').animate({ width: '80', marginLeft: '0'}, 300); 
     $(this).addClass('.op'); 
     } 
}); 
+0

嗯,你应该缓存一些事情......我会为你做一个快速的重新写入。这是唯一的点击事件进行.box? – 2012-04-01 02:50:20

+0

是否有可能在页面上使用一些AJAX来重新载入包含附加处理程序的脚本的页面部分? – tvanfosson 2012-04-01 02:54:43

+0

你能发布你的html吗? – musa 2012-04-01 03:18:33

回答

3

指类类的操作功能,当你不使用点表示法。

它应该是.addClass('op'),.removeClass('op').hasClass('op') - 应该为您解决它。

-1

我不会用live。相反,尝试click

$('.box').click(function(){ 
      if ($(this).hasClass('.op')) 
      { 
      $(this).siblings('.lh').animate({ width: '0', marginLeft: '80'}, 300); 
      $(this).removeClass('.op'); 
      } else 
      { 
      $(this).siblings('.lh').animate({ width: '80', marginLeft: '0'}, 300); 
      $(this).addClass('.op'); 
      } 
    }); 

http://api.jquery.com/click/

+0

我同意,他不应该使用live()或on()积极倾听该事件。似乎没有任何DOM删除/附加正在进行。 – 2012-04-01 02:47:50

1

box.hasClass('.op')尝试没有点。像box.hasClass('op')但我想这不是真正的问题

$('.box').live('click',function(){ 

      if ($(this).hasClass('op')) 
      { 
      $(this).siblings('.lh').animate({ width: '0', marginLeft: '80'}, 300); 
      $(this).removeClass('op'); 
      } else { 
      $(this).siblings('.lh').animate({ width: '80', marginLeft: '0'}, 300); 
      $(this).addClass('op'); 
      } 
    });