Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2018, 19:08
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

Как найти ближайший предыдущий элемент с искомым классом?
Есть календарь с фильтром по ивентам. Если выбираем первый в списке за день, то все поля отображаются так, как надо, но если ивент идет 2,3 и т.д. начинаются проблемы, съедается шапка, строка в таблице с датой.

Как добраться до искомых элементов с классом fc-list-heading (в другие дни) и скрывать только их, а непосредственно идущий в тот же день, что и сам ивент оставлять? фидл
$(document).on('change', '#method_selector', function() {
  $('.fc-list-item').show();
  $('.fc-list-heading').show();
  var method = $(this).val();
  if (method.length) {
    $('.fc-list-item').hide();
    $('.fc-list-item').prev('.fc-list-heading').hide();
    $('.fc-list-item.' + method).show();
    $('.fc-list-item.' + method).prev('.fc-list-heading').show();
  }
});
$('#calendar').fullCalendar({
  header: {
    left: 'prev,next today',
    center: 'title',
    right: 'listDay,listWeek,month'
  },

  // customize the button names,
  // otherwise they'd all just say "list"
  views: {
    listDay: {
      buttonText: 'list day'
    },
    listWeek: {
      buttonText: 'list week'
    }
  },

  defaultView: 'listWeek',
  defaultDate: '2016-09-12',
  navLinks: true, // can click day/week names to navigate views
  editable: true,
  eventLimit: true, // allow "more" link when too many events
  events: [{
      title: 'Conference (website)',
      start: '2016-09-11',
      end: '2016-09-14',
      url: "https://www.ted.com/talks",
      className: "Conference"
    },
    {
      title: 'Meeting (download document)',
      start: '2016-09-12T10:30:00',
      end: '2016-09-12T12:30:00',
      url: "http://storage.ted.com/tedx/manuals/tedx_speaker_guide.pdf",
      className: "Meeting_download"
    },
    {
      title: 'Lunch',
      start: '2016-09-12T12:00:00',
      className: "Lunch"
    },
    {
      title: 'Meeting (members only)',
      start: '2016-09-12T14:30:00',
      url: "http://www.dictionary.com/browse/restricted",
      className: "Meeting_memebers"
    },
    {
      title: 'Happy Hour',
      start: '2016-09-12T17:30:00',
      className: "Happy_Hour"
    },
    {
      title: 'Dinner',
      start: '2016-09-12T20:00:00',
      className: "Dinner"
    }
  ]
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://fullcalendar.io/js/fullcalendar-3.0.1/lib/moment.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.0.1/fullcalendar.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.0.1/fullcalendar.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.0.1/fullcalendar.js"></script>
<select id="method_selector">
  <option value="">All</option>
  <option value="Conference">Conference (website)</option>
  <option value="Meeting_download">Meeting (download document)</option>
  <option value="Lunch">Lunch</option>
  <option value="Meeting_memebers">Meeting (members only)</option>
  <option value="Happy_Hour">Happy Hour</option>
  <option value="Dinner">Dinner</option>
</select>
<div>
  <div id='calendar'></div>
</div>

body {
  margin: 40px 10px;
  padding: 0;
  font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;
  font-size: 14px;
}

#calendar {
  max-width: 900px;
  margin: 0 auto;
}

.fc-list-item-title a:link,
.fc-list-item-title a:visited {
  color: #447af8;
}

.fc-list-item-title a:hover {
  color: #000000;
  text-decoration: underline;
}
Ответить с цитированием
  #2 (permalink)  
Старый 12.10.2018, 20:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

giwuf,
if( method.length ) {	
      $('.fc-list-item').hide();
      $('.fc-list-heading').hide();
      $('.fc-list-item.' + method).show()
     .each(function() {
     $(this).prevAll('.fc-list-heading:first').show();
     })
}


https://jsfiddle.net/xc5ody5m/111/

Последний раз редактировалось рони, 12.10.2018 в 20:36.
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2018, 22:28
Профессор
Отправить личное сообщение для giwuf Посмотреть профиль Найти все сообщения от giwuf
 
Регистрация: 16.05.2017
Сообщений: 167

рони,

Ух ты! Крутое очень решение! Спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery как найти элемент сгенерированный js razorg1991 Events/DOM/Window 4 31.08.2014 12:52
как найти ближайший предыдущий элемент imedia Элементы интерфейса 1 27.07.2014 22:16
Как перевести фокус на следующий элемент? Shitbox2 jQuery 3 03.11.2012 15:57
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11