1 ListView.contentSearch.on('change', 'select[class="search"]', function(event){ 2 console.log( $(this) ) 3 Search.changeSearchFieldAction($(this)); 4 });
ListView = klasa zawierająca metody operacji na liście
contentSearch = statyczny element, zawiera w sobie dynamiczną wyszukiwarkę
zaczepiam event na select o klasie search (w tym selekcie wybieramy z listy po jakim polu chcemy wyszukiwać, metoda changeSearchFieldAction ładuje na tej podstawie dwa dodatkowe pola: "codnitions"[] czyli warunki(równe, różne, mniejsze, większe, zakres jeśli typ pola to date) i pole na wartość (lub dwa pola jeśli data, lub pole select jeśli enum) )
O co chodzi... Błąd jest w linji 1, a dokładniej ta fraza: 'select[class="search"]'
jeżeli temu selectowi dodam jakąś klase, to to przestaje działać.
(ps. widzicie tam w drugiej linji jest console.log, on zwraca "jQuery(select.search)" i tak powinno być)
Jak byłoby idealnie:
var S = ListView.contentSearch.find('select.search'); ListView.contentSearch.on('change', S ,function(event){ event.stopPropagation(); console.log( $(this) ) search.changeSearchFieldAction($(this)); });
ALE NIE! S jest obiektem, a jako drugi parametr musi być string bo inaczej console.log zwraca "jQuery(div.contentSearch)" a to mi do niczego nie potrzebne
Moje pytanie: Jak ze zmiennej S wyciągnąć stringa który będzie nakierowywał dokładnie na to o co mi chodzi?
Próbuje np. S.get(0).nodeName - ale to mi zwraca tylko string "SELECT" i w dodatku tylko pierwszego noda, niedopuszczalne... z tym, że to tylko jeden to bym sobie poradził jamimś eachem albo coś.
Nie wiem, może jQuery trzyma coś takiego jak własny unikalny ID (nie #) każdego obiektu w dokumencie który dałoby się wyciągnąć np ListView.contentSearch.getUniqueId i przekazać jako drugi parametr do .on() tak żeby on wiedział o co chodzi?