JQuery это относится к классу в заявлении, если

0

У меня есть несколько 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() не работает. Любые предложения о том, почему это не работает и как его исправить?

  • 1
    Определить "не работает". Правильные элементы не отображаются или их слишком много видно?
Теги:
if-statement
this
parent

2 ответа

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 класса

  • 0
    Почему бы не использовать метод filter ?
  • 0
    @ undefined Ваш ответ на самом деле красивее. Я использовал более простую реализацию, чтобы легче объяснить, почему оригинальный код не работает
Показать ещё 3 комментария
1

if не создать сферу в JavaScript, в вашем коде this относится к window объекту, вы должны запросить DOM и выберите элемент, но он также не решает проблему здесь, как html метод возвращает только HTML содержания первого согласованный элемент, подходящий метод здесь - filter:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню