У меня есть несколько div, которые содержат дату внутри них в теге ap. Я хочу только те divs, которые отображают текущую дату для отображения.
Пример 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() не работает. Любые предложения о том, почему это не работает и как его исправить?
В теле функции $(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
класса
filter
?
if
не создать сферу в JavaScript, в вашем коде this
относится к window
объекту, вы должны запросить DOM и выберите элемент, но он также не решает проблему здесь, как html
метод возвращает только HTML содержания первого согласованный элемент, подходящий метод здесь - filter
:
$('.date').filter(function() {
return $.trim(this.innerHTML) === date;
}).parent().show();