25.11.2018, 00:28
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 7
|
|
Фильтр таблицы по классу
Возможно ли создать фильтр, чтобы искал несколько значений в классе.
Например: class="f-Кольцо f-Кольцо f-Пояс".
Нужно чтобы фильтр искал именно эти совпадения и в разной последованности.
Селекторами я выбираю "Кольцо Кольцо Пояс" или "Кольцо Пояс Кольцо" и ищет эти значения в классе, а класс один и тот же "class="f-Кольцо f-Кольцо f-Пояс"".
Классы могут совпадать.
<tr "class="f-Кольцо f-Кольцо f-Пояс">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Пояс</td>
</tr>
<tr class="f-Кольцо f-Пояс f-Кольцо">
<td>Кольцо</td>
<td>Пояс</td>
<td>Кольцо</td>
</tr>
<div class="table-filters">
Ячейка предметов 1 <select id="itemslot1-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 2 <select id="itemslot2-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 3 <select id="itemslot3-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
</div>
<table id="filter-table">
<thead>
<tr>
<th>Ячейка предметов 1</th>
<th>Ячейка предметов 2</th>
<th>Ячейка предметов 3</th>
</tr>
</thead>
<tbody>
<tr data-filter="Кольцо,Шея,Пояс">
<td>Кольцо</td>
<td>Шея</td>
<td>Пояс</td>
</tr>
<tr data-filter="Шея,Пояс,Кольцо">
<td>Шея</td>
<td>Пояс</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Темляк,Шея,Кольцо">
<td>Темляк</td>
<td>Шея</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Кольцо">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Талисман">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Талисман</td>
</tr>
</tbody>
</table>
Последний раз редактировалось Anonket, 25.11.2018 в 10:21.
Причина: добавил data-filter
|
|
25.11.2018, 01:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Anonket,
так можно сделать?
<tr data-filter="Кольцо,Шея,Пояс">
<td>Кольцо</td>
<td>Шея</td>
<td>Пояс</td>
</tr>
|
|
25.11.2018, 09:49
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 7
|
|
Сообщение от рони
|
Anonket,
так можно сделать?
<tr data-filter="Кольцо,Шея,Пояс">
<td>Кольцо</td>
<td>Шея</td>
<td>Пояс</td>
</tr>
|
Да.
|
|
25.11.2018, 10:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Anonket,
отредактируйте строки в первом сообщении, добавьте data-filter
|
|
25.11.2018, 10:22
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 7
|
|
Добавил
|
|
25.11.2018, 11:03
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
фильтрация строк таблицы
Anonket,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var pattern = [],
trs = $("#filter-table tbody tr");
$(".table-filters select").each(function(i, select) {
var el = $(select);
pattern.push(select.value);
el.change(function() {
pattern[i] = select.value;
trs.hide().filter(function(i, tr) {
var data = $(tr).data("filter").split(",");
return pattern.every(function(txt, k) {
return txt == "Все" || txt == data[k]
})
}).show()
})
})
});
</script>
</head>
<body>
<div class="table-filters">
Ячейка предметов 1 <select id="itemslot1-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 2 <select id="itemslot2-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 3 <select id="itemslot3-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
</div>
<table id="filter-table">
<thead>
<tr>
<th>Ячейка предметов 1</th>
<th>Ячейка предметов 2</th>
<th>Ячейка предметов 3</th>
</tr>
</thead>
<tbody>
<tr data-filter="Кольцо,Шея,Пояс">
<td>Кольцо</td>
<td>Шея</td>
<td>Пояс</td>
</tr>
<tr data-filter="Шея,Пояс,Кольцо">
<td>Шея</td>
<td>Пояс</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Темляк,Шея,Кольцо">
<td>Темляк</td>
<td>Шея</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Кольцо">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Талисман">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Талисман</td>
</tr>
</tbody>
</table>
</body>
</html>
|
|
25.11.2018, 11:37
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 7
|
|
рони,
Спасибо, а так не выйдет? Если в дата значения такие "Кольцо,Кольцо,Талисман", а селекторами выбираю "Талисман, Кольцо,Кольцо" и найти эти значения в дата. В селекторе "Талисман" первый, а в дата он третий.
Последний раз редактировалось Anonket, 25.11.2018 в 11:39.
|
|
25.11.2018, 11:49
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Anonket,
выйдет.
|
|
25.11.2018, 12:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Anonket,
проверьте!
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var pattern = [],
trs = $("#filter-table tbody tr");
$(".table-filters select").each(function(i, select) {
var el = $(select);
pattern.push(select.value);
el.change(function() {
pattern[i] = select.value;
trs.hide().filter(function(i, tr) {
var data = $(tr).data("filter").split(",");
var arr = pattern.slice(0);
data.forEach(function(a) {
var i = arr.indexOf(a);
if(i != -1) arr.splice(i,1);
})
return arr.every(function(txt, k) {
return txt == "Все"
})
}).show()
})
})
});
</script>
</head>
<body>
<div class="table-filters">
Ячейка предметов 1 <select id="itemslot1-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 2 <select id="itemslot2-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
Ячейка предметов 3 <select id="itemslot3-filter">
<option>Все</option>
<option value="Икона">Икона</option>
<option value="Кольцо">Кольцо</option>
<option value="Пояс">Пояс</option>
<option value="Талисман">Талисман</option>
<option value="Темляк">Темляк</option>
<option value="Шея">Шея</option>
</select>
</div>
<table id="filter-table">
<thead>
<tr>
<th>Ячейка предметов 1</th>
<th>Ячейка предметов 2</th>
<th>Ячейка предметов 3</th>
</tr>
</thead>
<tbody>
<tr data-filter="Кольцо,Шея,Пояс">
<td>Кольцо</td>
<td>Шея</td>
<td>Пояс</td>
</tr>
<tr data-filter="Шея,Пояс,Кольцо">
<td>Шея</td>
<td>Пояс</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Темляк,Шея,Кольцо">
<td>Темляк</td>
<td>Шея</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Кольцо">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Кольцо</td>
</tr>
<tr data-filter="Кольцо,Кольцо,Талисман">
<td>Кольцо</td>
<td>Кольцо</td>
<td>Талисман</td>
</tr>
</tbody>
</table>
</body>
</html>
|
|
25.11.2018, 12:17
|
Новичок на форуме
|
|
Регистрация: 24.11.2018
Сообщений: 7
|
|
рони,
Отлично! Это то, что нужно было. Спасибо!
|
|
|
|