首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >slideToggle与classToggle

slideToggle与classToggle
EN

Stack Overflow用户
提问于 2014-09-05 09:48:26
回答 3查看 65关注 0票数 0

我有一个表,如果我点击标题,我想折叠下一行。此外,无论表是否折叠,我都想更改类。

我写了这个:

代码语言:javascript
复制
$('th').click(function(){
        var $el = $(this)
        $(this).closest('tr').next().slideToggle(0)
        if($(this).closest('tr').next().is(':visible')) {
           $el.addClass   ('opened');
           $el.removeClass('closed');
        } else {
           $el.removeClass   ('opened');
           $el.addClass      ('closed');
        }
});  

我想知道我能不能用JQuery做得更好?

以下是HTML代码:

代码语言:javascript
复制
<table>
    <tr>
        <th colspan="2">Line 1</th>
    </tr>
    <tr>
        <td>data</td>
        <td>data</td>
    </tr>
    <tr>
        <th colspan="2">Line 2</th>
    </tr>
    <tr>
        <td>date</td>
        <td>data</td>
    </tr>
</table>  

和css:

代码语言:javascript
复制
.opened {
    background-image: url("bullet_toggle_minus.png");
    background-repeat: no-repeat;
    background-position: left center;
}

.closed {
    background-image: url("bullet_toggle_plus.png");
    background-repeat: no-repeat;
    background-position: left center;
}  
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-05 10:00:05

您可以在多个类中使用toggleClass

代码语言:javascript
复制
$('th').click(function () {
    var $el = $(this)
    $el.closest('tr').next().slideToggle(0);
    $el.toggleClass('opened closed');
});

请记住通过在th上设置类来设置所有元素的初始状态,例如:

代码语言:javascript
复制
<th colspan="2" class="opened">Line 1</th>

演示:http://jsfiddle.net/r0xpbqea/

票数 3
EN

Stack Overflow用户

发布于 2014-09-05 09:57:08

代码语言:javascript
复制
$('tr').addClass('opened');
$('th').click(function(){
        var $el = $(this)
        $(this).closest('tr').next().slideToggle(0).toggleClass('opened closed');
}); 

CSS

代码语言:javascript
复制
tr {
    background-repeat: no-repeat;
    background-position: left center;
}

.opened {
    background-image: url("bullet_toggle_minus.png");
}

.closed {
    background-image: url("bullet_toggle_plus.png");
} 
票数 0
EN

Stack Overflow用户

发布于 2014-09-05 09:55:29

脚本

代码语言:javascript
复制
$('th').click(function() {
        var $el = $(this);
        $(this).closest('tr')
               .next()
               .slideToggle(0)
               .toggleClass('closed');
});  

风格

代码语言:javascript
复制
tr {
    background-image: url("bullet_toggle_minus.png");
    background-repeat: no-repeat;
    background-position: left center;
}

tr.closed {
    background-image: url("bullet_toggle_plus.png");
    background-repeat: no-repeat;
    background-position: left center;
} 

小提琴:http://jsfiddle.net/teh94dma/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25683046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档