0

当我为 jQuery 单击 Toggle 时,我需要删除 .hidesome 并将其更改为 .show ,反之亦然。

无法得到这个......它已经搜索了 4 个小时。

<a href="#" class="button">Toggle</a>
<div class="signatureContain">
<div class="signature hidesome">
    When the button above is pressed you should see the rest<br />
    "the rest"
</div>
</div>

<a href="#" class="button">Toggle</a>
<div class="signatureContain">
<div class="signature hidesome">
    When the button above is pressed you should see the rest<br />
    "the rest"
</div>
</div>


('.signatureContain').live('click',function(){
      if ($(this).hasClass('hidesome'))
      {
         $(this).removeClass('hidesome');
         $(this).addClass('show');
      } else
      {
         $(this).removeClass('show')
         $(this).addClass('hidesome');
      }
});


.hidesome{ height:20px;overflow:hidden}
.show{ height:auto }

http://jsfiddle.net/w3Hg3/

4

3 回答 3

2

您可以使用.toggleClass,但我认为您对代码的其余部分有点偏离。而不是绑定到.signatureContain您可能想要绑定.button并找到兄弟姐妹 .signatureContain,然后是它的.signature孩子。您还缺少$. 我在这里修复了所有这些:

http://jsfiddle.net/w3Hg3/3/

.toggleClass版本:http: //jsfiddle.net/w3Hg3/5/

于 2013-01-23T01:14:20.610 回答
1

使用toggleClass方法。

$('.signatureContain').on('click', function(event){
    $(this).toggleClass("hidesome show");
});
于 2013-01-23T01:11:45.787 回答
0

请记住将事件侦听器设置为按钮而不是容器 .signatureContain

$('a.button').on('click',function(){
    $(this).next('.signatureContain').children('.signature').toggleClass('show');
});

.on 的性能比 live 好:http ://www.jquery4u.com/jquery-functions/on-vs-live-review/

通过使用孩子,您可以比使用查找更具体。

演示:http: //jsfiddle.net/3H4ym/

于 2013-01-23T01:24:55.467 回答