【问题标题】:Collapsable table Javascript - changing initial view可折叠表 Javascript - 更改初始视图
【发布时间】:2016-12-01 22:19:05
【问题描述】:

我有一个由每个月的<table> 组成的日历。我每个月都在使用 Javascript 展开/折叠。

Javascript:

$(function() {
var $month = $('.month');
$month.find("tr").not('.monthLabel').hide();
$month.find("tr").eq(0).show();

$month.find(".monthLabel").click(function(){
    $month.find('.monthLabel').not(this).siblings().fadeOut(500);
    $(this).siblings().fadeToggle(500);
}).eq(0).trigger('click');
});

HTML:

<table border="0" cellpadding="0" class="month jan">
<tr class="monthLabel">
<th scope="col" colspan="7">
<h3>January</h3>
</th>
</tr>
<tr class="weekLabel">
<th class="sun" scope="col" abbr="Sunday">Sun</th>
<th class="mon" scope="col" abbr="Monday">Mon</th>
etc...
</table>

它工作正常,但现在,它默认为第一个表(一月)展开,其余的则折叠。相反,我希望它默认为当前月份展开,其余月份折叠。有没有办法在不完全重新格式化表格的情况下做到这一点?这将是理想的,因为大约有 40 个日历是使用 VBasic 自动生成的。如果可能的话,我希望实际的表格 HTML 保持不变。

【问题讨论】:

    标签: javascript jquery html-table expand


    【解决方案1】:

    我认为它默认为一月的原因是您在第一行(一月)触发点击事件 -

    ...eq(0).trigger('click');
    

    如果您想默认使用不同的月份,只需提供不同的行号 -

    // for february
    ...eq(1).trigger('click');
    

    就个人而言,我会将函数提取出来,以便在点击事件之外使用。

    function showMonth( monthName ){ .... }
    

    【讨论】:

    • 至于日期,您要么必须将其从服务器传递给 JS,要么使用客户端上的日期,例如 new Date().getMonth()
    • 谢谢你,Bungus。我使用 php 以将当前月份传递给 javascript: .eq().trigger('click');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多