![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Pytanie do specjalistów od jQuery.
Chciałbym posegregować elementy według pewnej kolejności którą że tak powiem mam w tablicy. Wybierając kolejno z tablicy identyfikator chę wyszukać element posiadający takie id bądź nazwę i przenieść we wskazane miejsce. Brzmi może dzwnie ale ... cóż tak chciałbym zrobić. Samo znajdowanie elementu to nie problem, problem jak teraz wskazać "rodzica" tego elementu i go wyciągnąć wraz z całą zawartością (.html()). Przykład:
czyli jeśli w tablicy znajduje się określony string wybierz TEN element/blok $('div .layered-navigation,.option-block').html() tylko nie wiem jak zrobić z niego 'this' jeśli znajduje się w nim lub jego dziecku wskazany string. mam nadzieję, że się jasno wyraziłem ![]() W międzyczasie znalazłem to: https://api.jquery.com/child-selector/ ... ale nie do końca czaję ... pozdrawiam amator Ten post edytował phpamator 1.09.2017, 21:16:39 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Chcesz wybrać elementy, których dzieci mają określone id lub nazwę, czy elementy, które posiadają w innerHTML jakiś string?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Dziecko dziecka zawiera tekst i po tym tekście rozpoznaję, następnie muszę zebrać innerHtml z parenta tego dziecka dziecka
czyli tak: czyli znajduje "mój string" i muszę zdefiniować to co jest jego rodzicem i dopiero zebrać cały html() rodzica i przenieść. ooo ale jeśli mogę wybrać rodzica który ma dziecko z określonym stringiem to chyba też będzie ok ? Ten post edytował phpamator 1.09.2017, 21:35:30 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Skoro dzieci Ciebie nie interesują, to sprawdzałbym każdego rodzica pod względem zawartości stringu w innerText. Wtedy nie musisz się zagłębiać w dzieci.
Chyba, że tekst ma być określonym dziecku/tagu. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak "sprawdzić innerHtml rodzica pod względem zawartości stringu" ...
Ten post edytował phpamator 1.09.2017, 23:00:04 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie rodzica, innerText rodzica.
-------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
wymyśliłem tak:
co źle zrobiłem ? http://jsfiddle.net/SayjQ/59/ to mi pomogło trochę ... Ten post edytował phpamator 1.09.2017, 23:35:12 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Kod span.filter-title:contains('"+blockName+"')
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaa hahahah no to ci powiem, że nic z tego, nie działa ![]() Za to działa tak:
Ten post edytował phpamator 2.09.2017, 19:54:22 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A ja Ci powiem, że działa zarówno tak jak podałeś, jak i:
ale Ty pewnie pomieszałeś kolejność cudzysłowów. A skoro chcesz pobrać od razu rodzica, to tak będzie czytelniej:
-------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
albo `.closest('div.layered-navigation.option-block')`
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Zdecydowanie nie działało ale nie będę się sprzeczał, nie uwzględniłeś zewnętrznych '' i napisałeś span.filter-title:contains('"+blockName+"')
dlatego poniższy kod robił NIC ![]() var block = jQuery('span.filter-title:contains('"+blockName+"')').parent().parent().html(); aaaale po zmianie owszem, działa. Bardziej podoba mi się jednak ta druga forma ![]() chociaż wersja a'la python_000 też jest ok ![]() Dzięki panowie ![]() to jednak było prostsze niż początkowo myślałem, przy okazji nauczyłem się co nieco jak można zmyślnie łączyć niektóre parametry, żeby wyszukać interesujący element ![]() |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie dodałem również nawiasów, jQuery, itd. Bez przesady. Podałem Ci fragment, w którym jest błąd.
-------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Działa, działa ale ..... coś nie do końca jak oczekiwałem.
Popatrzcie i podpowiedzcie proszę co źle zrobiłem albo jaka jest szansa, że to wogóle będzie robiło to o czym mówiłem.
Może przykład jest beznadziejnie prosty może wręcz banalny ale jeszcze nie czaję tego. Ten post edytował phpamator 4.09.2017, 14:29:38 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Uprościłbym pętlę skoro korzystasz z each.
Przecież jeśli przenosisz element w innej miejsce, to i tak nie szukasz go w pętli ponownie. Jeśli przeniosłeś Brands, to w kolejnej iteracji szukasz Price. Jak się objawia ta usterka? -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
i `block.lenght > 0` bo zdaje się że jQ i tak zwróci obiekt ale bez rezultatów.
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Uprościłbym pętlę skoro korzystasz z each.
Przecież jeśli przenosisz element w innej miejsce, to i tak nie szukasz go w pętli ponownie. Jeśli przeniosłeś Brands, to w kolejnej iteracji szukasz Price. Jak się objawia ta usterka? Tak teoretycznie miało to działać ale ... z jakiegoś powodu podczas wykonywania pętli (wkleiłem tam console.log() żeby widzieć ile z listy przeszło a ile nie przeszło bo może tak być lista/tablica nie zawiera wszystkich tylko niektóre nazwy) jakby przestaje kolejno dodawać/przenosić elementy, działa dobrze praktycznie tylko dla pierwszych 2 czyli Brands i Prices. Powinienem widzieć też jakie zostały pominięte wraz z nazwami a skrypt pokazuje mi jedną tylko nazwę z ilością powtórzeń. Czyli co, usunąć indexy, zostawić tylko same nazwy w tablicy mówisz ? |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Indeksy swoją drogą. Wtedy blockName jest dostępny bezpośrednio.
Wprowadziłeś warunek, o którym pisał Pyton_000? -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Zmodyfikowałem i faktycznie, lepiej działa i widzę że prawidłowo teraz sortuje a jeśli niema na liście zostawia.
Tak dodałem warunek "a'la python_ooo" ale z nim coś nie halo. Ten post edytował phpamator 4.09.2017, 15:20:22 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A nie prościej by było napisać, co nadal nie działa?
-------------------- |
|
|
![]()
Post
#21
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
No może
![]() Po dodaniu block.lenght>0 skrypt przestaje działać po pierwszych 2 nazwach ![]()
Co znowu skopałem ? Ten post edytował phpamator 4.09.2017, 15:25:01 |
|
|
![]()
Post
#22
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie musisz dwukrotnie szukać span zawierającego ten tekst, bo przed warunkiem go znalazłeś. -------------------- |
|
|
![]()
Post
#23
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Aaaaaa rozumiem ..... jakby trochę
![]() przy okazji upraszcza się kod ![]() blockParent(). ..... nie jest funkcją ![]() i kiedy block.lenght>0 pomija wszystkie i wywala nie znaleziono ![]() Ten post edytował phpamator 4.09.2017, 15:43:34 |
|
|
![]()
Post
#24
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
co to znaczy że przestaje działać. Co wywala konsola?
|
|
|
![]()
Post
#25
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
No własnie wywala błąd "blockParent()" nie jest funkcją więc wywaliłem nawiasy i śmiga ale .lenght >0 powoduje, że nie widzi nazw.
i tak wugląda w konsoli ![]() ![]() Ten post edytował phpamator 4.09.2017, 15:47:58 |
|
|
![]()
Post
#26
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
daj przed ifem
console.log(blockName, block.length); I pokaż przykładowy cały kod html gdzie są te wartości. Może HTML też jest skopany? |
|
|
![]()
Post
#27
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Zgadza się:
A co wyświetla console.log(block) przed ifem? -------------------- |
|
|
![]()
Post
#28
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
teraz jest ok, wyświetla nazwe i 1 albo jeśli nie znalazł nazwe i not found
![]() a z długością ... literówka chyba bo nic innego nie mogło być ![]() ![]() Może by tak zamiast przenosić poprostu posortować według listy w arrayu ? Ten post edytował phpamator 4.09.2017, 16:07:12 |
|
|
![]()
Post
#29
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
to co działa czy nie działa? Pokaż ostatecznie kod jaki masz.
|
|
|
![]()
Post
#30
|
|
![]() Grupa: Zarejestrowani Postów: 328 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) ![]() ![]() |
Działa,
kod wygląda tak:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 22:27 |