2011-05-19 74 views
3

我正在学习jquery,我想做一个效果:首先点击,滑动div#ccc并将链接类更改为'aaa';再次单击,滑动div#ccc并将链接类更改回“bbb”。现在滑动下来可以工作,但removeClass,addClass不起作用。如何修改,使两个效果完美的工作?谢谢。jquery点击更改类

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function(){    
$("#click").click(function() { 
    $("#ccc").slideDown('fast').show(); 
    $(this).removeClass('bbb').addClass('aaa'); 
}); 
$("#click").click(function() { 
    $("#ccc").slideDown('fast').hide(); 
    $(this).removeClass('aaa').addClass('bbb'); 
}); 
}); 
</script> 
<style> 
#ccc{display:none;} 
</style> 
<div id="click" class="bbb">click</div> 
<div id="ccc">hello world</div> 

回答

4

您需要使用单个切换事件。您正在设置点击事件两次,这是行不通的。

jsfiddle

3

使用翻转而不是显示/隐藏和toggleClass而不是添加/删除,并合并成一个单一的点击事件。像这样的东西(未经测试,可能无法正常工作):

$("#click").click(function() { 
    $("#ccc").toggle().animate(); 
    $(this).toggleClass('bbb aaa'); 
}); 
+1

'$(this).toggleClass('bbb aaa');'会更好。 – 2011-05-19 21:50:21

+0

确实会 - 编辑! – SickHippie 2011-05-19 22:06:58

+0

干净整洁的解决方案。谢谢 – Dan 2013-10-15 02:28:46

1

您正在寻找toggle event,它出现。

$(document).ready(function() { 
    $('div#click').toggle(
     function() { 
      $('div#ccc').slideDown('fast').show(); 
      $('div#click').removeClass('bbb').addClass('aaa'); 
     }, 
     function() { 
      $('div#ccc').slideDown('fast').hide(); 
      $('div#click').removeClass('aaa').addClass('bbb'); 
     }); 
    });