jquery这是指if语句中的类

时间:2013-12-19 02:54:06

标签: javascript jquery if-statement this parent

我有几个div在p标签中包含一个日期。我只想显示那些显示当前日期的div。

示例HTML:

<div class="box">
  <p class="date">2013/12/18</p>
</div>
<div class="box">
  <p class="date">2013/12/19</p>
</div>
<div class="box">
  <p class="date">2013/12/20</p>
</div>

这是我现在拥有的javascript,但它无效。

$(document).ready(function(){
    var d = new Date();

    var month = d.getMonth()+1;
    var day = d.getDate();

    var date = d.getFullYear() + '/' +
        ((''+month).length<2 ? '0' : '') + month + '/' +
        ((''+day).length<2 ? '0' : '') + day;

    if($('.date').html() == date){
        $(this).parent().css('display', 'block');
    }
});

代码进入if语句,但.css()行无效。关于为什么这不起作用以及如何解决它的任何建议?

2 个答案:

答案 0 :(得分:1)

if不会在JavaScript中创建范围,在您的代码this中引用window对象,您必须查询DOM并选择元素,但它也不会这里解决问题,因为html方法只返回第一个匹配元素的html内容,这里合适的方法是filter

$('.date').filter(function() {
    return $.trim(this.innerHTML) === date;
}).parent().show();

答案 1 :(得分:1)

在函数$(document).ready的正文中,this的值不是您的.date元素

替换

if($('.date').html() == date){
    $(this).parent().css('display', 'block');
}

$('.date').each(function() {
    if ($(this).html() == date) {
        $(this).parent().css('display', 'block');
    }
});

在第二部分代码中,您位于.each()函数的正文中:this代表您的元素date