я написал фильтр для списка многих объектов. Пользователи могут выбирать свои опции с помощью переключателей.
В рамках функции фильтра я выбираю отмеченные переключатели для обеих групп / наборов:
if ( $('#filter input[name="interval"]:checked').val() == 'all' ) {
if( $('#filter input[name="day"]:checked').val() == 'all' ) {
var searchSelector = "li";
} else {
var searchSelector = "li[data-day=" + $('#filter input[name="day"]:checked').val() + "]";
}
} else {
if( $('#filter input[name="day"]:checked').val() == 'all' ) {
var searchSelector = "li[data-interval=" + $('#filter input[name="interval"]:checked').val() + "]";
} else {
var searchSelector = "li[data-interval=" + $('#filter input[name="interval"]:checked').val() + "]" + "li[data-day=" + $('#filter input[name="day"]:checked').val() + "]";
}
}
Как сказано в Правилах производительности jQuery я должен кэшировать объекты jQuery. Обычно эта практика всегда работает, но в этом случае значения моих вторых переключателей всегда выводят значение первого проверенного значения.
Есть идеи, как я могу упростить этот код jQuery?
СПАСИБО
Вот HTML-код для кнопок:
<form id="filter">
<fieldset>
<label>
<input type="radio" name="interval" value="all">
all</label>
<label>
<label>
<input type="radio" name="interval" value="hourly">
hourly</label>
<label>
<input type="radio" name="interval" value="daily">
daily</label>
<label>
<input type="radio" name="interval" value="weekly">
weekly</label>
<label>
<input type="radio" name="interval" value="monthly">
monthly</label>
<label>
<input type="radio" name="interval" value="yearly">
yearly</label>
</fieldset>
<fieldset>
<label>
<input type="radio" name="day" value="all">
all</label>
<label>
<input type="radio" name="day" value="monday">
monday</label>
<label>
<input type="radio" name="day" value="tuesday">
tuesday</label>
<label>
<input type="radio" name="day" value="wednesday">
wednesday</label>
<label>
<input type="radio" name="day" value="thursday">
thursday</label>
<label>
<input type="radio" name="day" value="friday">
friday</label>
</fieldset>
</form>
И вот как выглядит мой список:
<li data-day="monday" data-interval="weekly">foo</li>
<li data-day="friday" data-interval="yearly">foo</li>