我有几个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()行无效。关于为什么这不起作用以及如何解决它的任何建议?
答案 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