muszę filtrować listę elementów, które składają się z dwóch zasadniczych danych atrybuty:mieszania logiczne AND i OR w selektor jQuery
<li class="song" data-title="freedom" data-id="7" data-tags="tag-18-eot,tag-2-eot" data-category="1">Freedom</li>
- Kategoria
- Tagi
filtrowania wg kategorii powinno być logiczne OR, ale filtrowanie przez tagi powinno być logiczne AND.
Filtrowanie za pomocą jednego z tych dwóch elementów nie stanowi problemu.
że stosowane, na przykład:
$(collection).filter('li[data-tags*="tag-50-eot"][data-tags*="tag-51-eot"]');
filtrować przez znaczniki. Lub:
$(collection).filter('[data-category="1"], [data-category="2"]);
, aby przefiltrować według kategorii.
To działa dobrze. Jednak nie mogłem znaleźć sposobu na połączenie tych dwóch selektorów w jedno pojedyncze zapytanie, które można przekazać do funkcji filter()
, a połączenie łańcuchowe dwóch wywołań filter()
nie prowadzi do pożądanego wyniku, ponieważ pierwsze wywołanie może odfiltrować elementy, które drugie połączenie pozostawiło za sobą.
Znalazłem this question o podobnym temacie, ale problem jest trochę inny i podejście również.
Jak prawidłowo odfiltrować te elementy?
próbowałeś prosto łańcuchowym z I w pierwszej kolejności? –
_chaining dwóch wywołań filter() nie prowadzi do pożądanego rezultatu, ponieważ pierwsze połączenie może odfiltrować elementy, które pozostawi drugie połączenie ._ Co sprawia, że tak uważasz? – hindmost
Nie masz pewności, jaki jest oczekiwany wynik? Zwróć wszystkie elementy, które mają ustawione atrybuty 'data-tags' i' data-category'? – guest271314