Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   проверить на совпадение нескольких атрибутов (https://javascript.ru/forum/jquery/61399-proverit-na-sovpadenie-neskolkikh-atributov.html)

рони 17.02.2016 00:00

alexmixaylov,
убрал пару строк лишних в скрипте пост 9 (29-30 в прежнем варианте)

alexmixaylov 17.02.2016 23:39

появилась одна проблема

у некоторых элементов есть несколько значений одного атрибута
например
data-city="Таллин"
data-city="Рига"
например, тур по прибалтике может включать несколько городов
задать два значения одному атрибуту не получиться
а сделать два атрибута, появиться еще один селект

рони 17.02.2016 23:52

alexmixaylov,
нет проблем определитесь с разделителем .,|

alexmixaylov 17.02.2016 23:58

запятая или дефис или |

рони 18.02.2016 00:01

alexmixaylov, изменения в блоке 27 -38, пример атрибута строка 62
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
      tr.hide{
   opacity: .2;
 }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
  <script>
$(function() {
    function fn() {
        $tr.forEach(function(a, e) {
            selects.every(function(a, c) {
                return !a.value || !!~obj.data[e].indexOf(a.value)
            }) ? $(a).removeClass("hide") : $(a).addClass("hide")
        })
    }
    var obj = {
            select: {},
            data: []
        },
        $tr = $.map($("table tbody tr"), function(tr, i) {
            var data = $(tr).data();
                Object.keys(data).forEach(function(key) {
                if (!obj.select[key]) obj.select[key] = {};
                if (!obj.data[i]) obj.data[i] = [];
                data[key].split("|").forEach(function(item) {
                obj.select[key][item] = true;
                obj.data[i].push(item);
                })
            });
            return tr
        }),
        selects = $.map(Object.keys(obj.select).sort(),
        function(s) {
            var sel = $("<select/>", {
                name: s,
                change: fn
            }).prependTo("body");
            var opt = Object.keys(obj.select[s]).sort();
            opt.unshift("");
            $.each(opt, function(indx, item) {
                $("<option/>", {
                    text: item,
                    value: item
                }).appendTo(sel)
            });
            return sel[0]
        })
});
  </script>
</head>

<body>
<table>
    <tbody>
        <tr class="table-row item_1657" data-city="Копенгаген|Хиллеред" data-type_e="Групповая экскурсия">
            <td class="type_e">Групповая экскурсия</td>
            <td class="city">тур по прибалтике</td>
        </tr>
        <tr class="table-row item_1658" data-city="Копенгаген" data-type_e="Групповая экскурсия">
            <td class="type_e">Групповая экскурсия</td>
            <td class="city">Копенгаген</td>
        </tr>
        <tr class="table-row item_1659" data-city="Хиллеред" data-type_e="Индивидуальная экскурсия">
            <td class="type_e">Индивидуальная экскурсия</td>
            <td class="city">Хиллеред</td>
        </tr>
        <tr class="table-row item_1660" data-city="Копенгаген" data-type_e="Индивидуальная экскурсия">
            <td class="type_e">Индивидуальная экскурсия</td>
            <td class="city">Копенгаген</td>
        </tr>
        <tr class="table-row item_1661" data-city="Роскильде" data-type_e="Индивидуальная экскурсия">
            <td class="type_e">Индивидуальная экскурсия</td>
            <td class="city">Роскильде</td>
        </tr>
        <tr class="table-row item_1662" data-city="Копенгаген" data-type_e="Индивидуальная экскурсия">
            <td class="type_e">Индивидуальная экскурсия</td>
            <td class="city">Копенгаген</td>
        </tr>
    </tbody>
</table>

</body>

</html>

alexmixaylov 18.02.2016 00:16

Прекрасно, Профессор!!!


Часовой пояс GMT +3, время: 06:53.