【问题标题】:display: none if date is expired [closed]显示:如果日期过期则无 [关闭]
【发布时间】:2016-12-16 14:30:35
【问题描述】:

我试图隐藏音乐会的日期,在 4 周过去之后,音乐会发生的时间。 1 天后,它应该会变成红色。

这是我在其他地方找到的:

$('#timeTable tr td').each(function () {
    var dtSt = $(this).html().split(" ");
    var dtAr = dtSt[0].split("/");
    var when = new Date(dtAr[1] + "/" + dtAr[0] + "/" + dtAr[2] + " " + dtSt[1]);
    console.log(when);    
    var now = Date.now();

    if (now - when > 2419200000) {
        $(this).parent('tr').addClass('four_weeks');
    } else if (now - when > 86400000) {
        $(this).parent('tr').addClass('one_day');
    } 
});

它适用于表格,但我希望它适用于我得到的 div,所以 我更改了结构中的 #timetable 部分:

$('.termin .termin_content h3').each(function () {
    if (now - when > 2419200000) {
        $(this).parent('h3').addClass('four_weeks');
    } else if (now - when > 86400000) {
        $(this).parent('h3').addClass('one_day');
    }
});

我猜这不是事情的运作方式。是否有可能摆脱一天中的时间,还是需要计算?

jsfiddle

【问题讨论】:

  • 1 thing:"parent('h3') 仅当它是

    元素时才采用父元素,您可能想使用 closest() 代替,您可以阅读文档:api.jquery.com/parent

  • @Seba 我为您的案例场景添加了一个可能的解决方案

标签: jquery date


【解决方案1】:

您的问题出在选择器上,后来为了标记 h3 标签,我对您的代码做了一些小改动。

$('.termin h3').each(function () {
    var dtSt = $(this).html().split(" ");
    var dtAr = dtSt[0].split(".");
    var when = new Date(dtAr[1] + "/" + dtAr[0] + "/" + dtAr[2] + " " + dtSt[1]);
    console.log(when);    
    var now = Date.now();

    if (now - when > 2419200000) {
        $(this).addClass('four_weeks');
    } else if (now - when > 86400000) {
        $(this).addClass('one_day');
    }
});

jsfiddle:http://jsfiddle.net/9ktfvq9r/

【讨论】:

  • 可以摆脱一天中的时间吗?我可以将类添加到整个 div 中吗?
  • @Seba 是的,实际上在代码中没有使用时间,要将类添加到 div 只需添加 $(this).parent().addClass() ,您将获得该类到带有“termin_concert”类的div
  • 太棒了,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
相关资源
最近更新 更多