使用jQuery隐藏基于id值的元素

时间:2016-04-10 18:13:17

标签: javascript jquery each

我有一个事件列表,我将每个事件的ID设置为到期日期,因此当日期小于当前日期时,元素将被隐藏。您可以在下面看到我的代码,看起来我失去了我在每个函数之外定义的dateContent变量的值:

HTML:

<div class="today"></div>
                        <ul id="20160430" class="nostylelist event-list">
                            <li>Event 1</li>
                            <li>April 29, 2016</li>
                            <li>Minneapolis Convention Center</li>
                            <li>Minneapolis, MN</li>
                            <li>Booth 659</li>
                        </ul>
                        <ul id="20151106" class="nostylelist event-list">
                            <li>Event 2</li>
                            <li>November 4-5, 2015</li>
                            <li>Minneapolis Convention Center</li>
                            <li>Minneapolis, MN</li>
                            <li>Booth 659</li>
                        </ul>

$(function() {
    var today
    var year
    var month
    var monthLength
    var day
    var dateContent

    function currentDate() {
        var today = new Date();
        var year = today.getFullYear();
        var month = today.getMonth()+1;
        var monthLength = month.toString().length;
        var day = today.getDate();
        if (monthLength == 1) {
            dateContent = $('.today').append(year).append('0' + month).append(day);
        } else {
            dateContent = $('.today').append(year).append(month).append(day);
        }
    }
    currentDate();


    $('.event-list').each(function( index ) {
        if ($(this).attr('id') < dateContent) {
            $(this).hide();
        }
        //$('.id').text(dateContent);
    });

});

3 个答案:

答案 0 :(得分:3)

用这个替换currentDate函数,将dateContent作为预期格式的字符串。请注意,getFullYear,getMonth和getDate返回数字,因此如果我们想保留格式,我们不应该直接添加它们。

a = [0,1,2,3,4,5,6,7,8,9]

iter1 = iter(a)
iter2 = reversed(a)
b = [item for n, item in enumerate(
        next(iter) for _ in a for iter in (iter1, iter2)
    ) if n < len(a)]

答案 1 :(得分:0)

我认为你期望dateContent保持当前日期。但是,您正在做的是将当前日期(例如20160410)设置为.today,并且追加的返回值是DOM元素,而不是值20160410。

所以即使与attr(&#39; id&#39;)进行比较也行不通。

答案 2 :(得分:0)

<script>
    $(function () {
        var today
        var year
        var month
        var monthLength
        var day
        var dateContent
        function currentDate() {
            var today = new Date();
            var year = today.getFullYear();
            var month = today.getMonth() + 1;
            var monthLength = month.toString().length;
            var day = today.getDate();
            if (monthLength == 1) {
                $('.today').append(year).append('0' + month).append(day);
                dateContent = year + '0' + month + day;
            } else {
                $('.today').append(year).append(month).append(day);
                dateContent = year + month + day;
            }

        }
        currentDate();            
        $('.event-list').each(function (index) {
            console.log(dateContent);
            console.log($(this).attr('id'));
            if ($(this).attr('id') < dateContent) {
                $(this).hide();
            }                
        });

    });