jQuery: поиск элементов, содержащих определенный текст - PullRequest
3 голосов
/ 03 мая 2011

У меня есть календарь со списком событий под ним на моей странице. Когда пользователь нажимает на следующую или предыдущую кнопку, я хочу заполнить div содержимым строк, содержащих только отображаемые в данный момент месяц и год в календаре. Вот структура строк (созданная с помощью Drupal 7 Views).

<div id="all-events">
  <div class="views-rows">
    <div class="field-date">
      <div class="field-content">
        <span>June 2011</span>
      </div>
    </div>
  </div>
  <div class="views-rows">
    <div class="field-event-title">
      <div class="field-content">
        <span>Some Event</span>
      </div>
    </div>
  </div>
</div>

Я получил это далеко с jQuery, но получаю огромный список ошибок:

   $('#calendar span.fc-button-next').live('click', function(){
      var month = $('#calendar .fc-header-title h2').html();
      $('.event-list').fadeOut(350, function(){
         $(this).html('');
         $('#all-events').each('.views-rows',function(){
            // Code goes here...
         });
      });
   });

Я должен также упомянуть, что я использую FullCalendar для создания календаря, поэтому он создается с помощью этого плагина. Прямо сейчас я могу узнать текущий месяц, который просматривает пользователь, но я хочу просмотреть список, найти все строки, содержащие этот месяц, и отобразить их в div .event-list.

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Я не мог полностью понять, что вы хотите, но для фильтрации элементов по его тексту используйте filter

<div>text 1</div>
<div> not this text </div>

JS

$("div").filter(function(){
   return $(this).text().indexOf("text 1") >= 0; // if contains desired text
}).html("this one matches 'text 1'");

См. Этот пример на jsFiddle

1 голос
/ 03 мая 2011

Это кажется неправильным:

$('#all-events').each('.views-rows',function(){...});

Как насчет этого:

$('.views-rows', '#all-events').each(function(){...});
0 голосов
/ 03 мая 2011

Начиная с версии 1.1.4, jQuery имеет , содержащий селектор для выбора элементов, содержащих определенный текст.

$('#calendar span.fc-button-next').live('click', function(){
  var month = $('#calendar .fc-header-title h2').html();
  $('.event-list').fadeOut(350, function(){
     var event_list = $(this).html('');
     $('#all-events .views-rows:contains(' + month + ')').each(function(){
       event_list.append($(this).html);
     });
     event_list.fadeIn();         
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...