Jquery 如何更改可扩展部分上的 +、-

标签 jquery

(使用jquery)我有以下功能

$(function() {
    $('tr.parent')
        .css("cursor","pointer")
        .attr("title","Click to expand/collapse")
        .click(function(){
            $(this).siblings('.child-'+this.id).toggle();
        });
    $('tr[@class^=child-]').hide().children('td');
});

我有以下网页

<table>
    <col style="width:40px;">
    <col style="width:80px;">
    <col style="width:150px;">
    <col style="width:40px;">
<thead>
    <tr>
        <th>ID</th>
        <th colspan="2">Name</th>
        <th>Total</th>
    </tr>
</thead>
<tbody>
    <tr class="parent" id="row123">
        <td>123</td>
        <td colspan="2">[+]Bill Gates</td>
        <td>100</td>
    </tr>
    <tr class="child-row123">
        <td>&nbsp;</td>
        <td>2007-01-02</td>
        <td>A short description</td>
        <td>15</td>
    </tr>
    <tr class="child-row123">
        <td>&nbsp;</td>
        <td>2007-02-03</td>
        <td>Another description</td>
        <td>45</td>
    </tr>
    <tr class="child-row123">
        <td>&nbsp;</td>
        <td>2007-03-04</td>
        <td>More Stuff</td>
        <td>40</td>
    </tr>

    <tr class="parent" id="row456">
        <td>456</td>
        <td colspan="2">[+]Bill Brasky</td>
        <td>50</td>
    </tr>
    <tr class="child-row456">
        <td>&nbsp;</td>
        <td>2007-01-02</td>
        <td>A short description</td>
        <td>10</td>
    </tr>
</tbody>
</table>

期望的结果:

在可展开部分左侧使用“[+]”和“[-]”在文本之间进行更改,以指示它可以展开或压缩。

最佳答案

我在您编辑之前就这样做了,我仍然认为它是有效的。我稍微更改了您的标记,将 [+] 放在自己的单元格中,例如:

<tr class="parent" id="row123">
    <td>[+]</td>           
    <td>123</td>
    <td colspan="2">Bill Gates</td>
    <td>100</td>
</tr>

然后你的代码就变得简单了:

$('tr.parent')
    .css("cursor","pointer")
    .attr("title","Click to expand/collapse")
    .click(function(){
        var sibs = $(this).siblings('.child-'+this.id).toggle();
        var expanded = sibs.is(':visible');
        $(this).children('td').eq(0).text( expanded ? '[-]' : '[+]');
    });

实例:http://jsfiddle.net/Vxdq8/

如果您确实想要在第二个单元格内使用+/-,我建议您将其包裹在一个跨度中并将上面的相关行更改为:

$(this).children('td').eq(1).children('span').text( expanded ? '[-]' : '[+]');

实例:http://jsfiddle.net/8J8Vj/

关于Jquery 如何更改可扩展部分上的 +、-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518312/

相关文章:

javascript - Bootstrap 轮播 : how to know which slider it is when carousel is paused

javascript - 为什么按下后退按钮时输入的文本没有被删除?

javascript - 如何获取表行id和该行的所有文本

jquery - dropzone.js 在没有 dropzone 的页面上给出错误 "Invalid dropzone element"

jquery - AngularJS 和指令的初学者问题 - 包装 jQuery 组件

javascript - 如何从数据库中检索各个元素的数据并将其存储到自动 div 中

javascript - 如何触发使用 Ajax 动态创建的元素上的指令?

jquery - 是否可以暂停或延迟 document.ready 执行一段时间?

javascript - 我们如何使用 jquery 计数器修改 "href"?

javascript - 在 JQuery .html() 调用中包含 Twig 模板并删除新行