создание фильтров из выделений (изотоп)

В основном у меня есть четыре уровня фильтра: формат, регион, демография и интересы.

<div class="form-div">
  <input type="checkbox" data-filter="i-newspaper">
  <input type="checkbox" data-filter="i-magazine">
</div>

<div class="form-div">
  <input type="checkbox" data-filter="i-northland">
  <input type="checkbox" data-filter="i-southland">
</div>

<div class="form-div">
  <select>
    <option value="4" data-filter="i-digital">Digital</option>
    <option value="1" data-filter="i-manufacturing">Manufacturing</option>
    <option value="2" data-filter="i-retail">Retail</option>
  </select>
</div>

<div class="form-div">
  <input data-filter="i-business-and-finance" type="checkbox">
  <input data-filter="i-careers-and-education" type="checkbox">
  <input data-filter="i-design-and-photography" type="checkbox">
</div>

Фильтры из изотопов основаны на том, что отмечено/выбрано выше.

Я использовал что-то вроде этого:

var selectors = [];
$(".form-div").find("input:checked, option:selected").each(function(){
  selectors.push('.'+$(this).data('filter'));
});
selectors = selectors.join('');

Который предоставлял селектор типа .i-newspaper.i-magazine.i-northland.i-southland.i-digital.i-design-and-photography (при условии, что это были отмеченные/выбранные элементы формы)

Однако каждый .form-div представляет собой отдельный набор, поэтому с приведенным выше выбором я надеюсь получить:

.i-newspaper.i-southland.i-digital.i-design-and-photography,
.i-newspaper.i-northland.i-digital.i-design-and-photography,
.i-magazine.i-southland.i-digital.i-design-and-photography,
.i-magazine.i-northland.i-digital.i-design-and-photography

Как добиться чего-то подобного?

Дайте мне знать, если мой вопрос нуждается в дополнительных разъяснениях...

Спасибо

ИЗМЕНИТЬ

Другим альтернативным решением этой проблемы является «многоуровневая» фильтрация.

Итак, отфильтруйте по этому набору: .i-newspaper, .i-magazine

Затем отфильтруйте подмножество по этому набору: i-southland, .i-northland

И так далее...

EDIT2 JsFiddle: http://jsfiddle.net/MkME9/


person ahren    schedule 24.09.2012    source источник
comment
Ваше решение может быть здесь jsfiddle.net/RRgjD или github.com/desandro/isotope/issues/143 или здесь fiddle.jshell.net/desandro/fgLUa/4/show   -  person Systembolaget    schedule 24.09.2012


Ответы (1)


Посмотрите на мое редактирование: http://jsfiddle.net/MkME9/

Это то, что вам нужно?

ИЗМЕНИТЬ Это правильно?

http://jsfiddle.net/MkME9/6/

РЕДАКТИРОВАНИЕ ПОСЛЕДНИМ (надеюсь)

http://jsfiddle.net/MkME9/9/

person WooCaSh    schedule 24.09.2012
comment
Я думаю, вам может понадобиться сохранить новую версию? - person ahren; 24.09.2012
comment
Ну, все, что вы предоставляете мне в этой скрипке, - это мой код... Я думаю, вы могли неправильно понять вопрос. - person ahren; 24.09.2012
comment
Итак, вы получаете это: .i-newspaper.i-magazine.i-northland.i-southland.i-digital.i-design-and-photography да? И хочу иметь строку .i-newspaper.i-southland.i-digital.i-design-and-photography, .i-newspaper.i-northland.i-digital.i-design-and-photography, . i-magazine.i-southland.i-digital.i-дизайн и фотография, .i-magazine.i-northland.i-digital.i-дизайн и фотография ?? - person WooCaSh; 24.09.2012
comment
Да, в основном каждый "набор" должен быть отмечен один раз в каждом другом "наборе". - person ahren; 24.09.2012
comment
Вы имеете в виду сочетание каждого с каждым да? - person WooCaSh; 24.09.2012
comment
да, так что никакие два элемента из одного и того же набора не могут находиться в одной и той же строке селектора. - person ahren; 24.09.2012
comment
давайте продолжим это обсуждение в чате - person WooCaSh; 24.09.2012
comment
Новая версия в отредактированном посте. Пожалуйста, проверьте и скажите, все ли работает так, как задумано. - person WooCaSh; 24.09.2012
comment
идеально! Спасибо! PS: я снова отредактировал его, чтобы сделать его на несколько строк меньше: jsfiddle.net/MkME9/10 (если вы заинтересованы) - person ahren; 25.09.2012