jQuery - operator negacji

0

Witam

Szukam i znaleźć nie mogę. Mam taki oto kod:

  $('ul','.current_page_ancestor.current_page_parent').hide(); 

chciałbym go teraz zanegować, tak by to nie ten element był ukrywany, a wszystkie inne.
Próbowałem dać:

$("#sidebar li li").hide();
$('ul','.current_page_ancestor.current_page_parent').show();

ale wtedy działa tak jakby tylko pierwsza linijka, a druga jest nieaktywna. Orientujecie się może, jak to przerobić, żeby działało?

0

ale wtedy działa tak jakby tylko pierwsza linijka, a druga jest nieaktywna. Orientujecie się może, jak to przerobić, żeby działało?

Ejejej gwarantuję Ci, że druga linijka jest aktywna. Kod jest wykonywany od początku do końca [przynajmniej we wszystkich znanych mi językach programowania, nie wykluczam, że są jakieś działające na odwrót ;]
W każdym razie wydaje mi się, że pomyliłeś kolejność parametrów, bo zgodnie z dokumentacją, to drugi parametr określa kontekst w obrębie którego są wyszukiwane elementy podane jako selektor w pierwszym, więc zamiast swojego kodu spróbuj tak:

$('.current_page_ancestor.current_page_parent', 'ul').show();

lub w ogóle zrezygnuj z drugiego parametru w ten sposób:

$('ul .current_page_ancestor.current_page_parent').show();

Może za bardzo pokręciłem, jeśli nie zrozumiałeś, to sprawdź co powie konsola na poniższy kod:

console.log( $('html', 'body') );
console.log( $('body', 'html') );

I na przyszłość polecam funkcję find ;]

0

@sirkruk nic z tego nie działa.

Ale my się chyba źle zrozumieliśmy. Ten pierwszy kod ukrywający działa prawidłowo. To znaczy elementy w klasie current są ukrywane. Tyle że nie potrafię tego przemianować tak, żeby to elementy w klasie current były widoczne a pozostałe ukryte.

0

No to wykorzystaj funkcję, którą podał notexists.
$('ul li').not('.ta-klasa-bedzie-pominieta');
ewentualnie skorzystaj z selektora not.

0

Tak też już próbowałem. Z praent i children też dupa blada :/ Dziwni mnie po prosu, ze ukrywanie działa, a jak chce zrobić na odwrót to nie działa, dlatego pytałem o jakiś operator negacji.

0

pokaż kod i powiedz co ma się pokazywać a co chować bo coś kręcisz

tu ukrywasz "li", tu pokazujesz "ul" a mówisz że to te same elementy z inną klasą...

0

Yhy kręcę bo tak naprawdę nie zależy mi na rozwiązaniu problemu. Chodzi o to, żeby sobie popisać, lubię marnować ludziom czas i sprawiać, że mają mniejszą samoocenę z powodu nierozwiązanych problemów :)

Proszę - http://finanse-online.hostzi.com
Po lewej jest menu chodzi o to, żeby po kliknięciu w jakąś pozycję i odświeżeniu strony, menu z wybraną pozycją pozostawało nadal rozwinięte.

2
Robster napisał(a)

Yhy kręcę bo tak naprawdę nie zależy mi na rozwiązaniu problemu. Chodzi o to, żeby sobie popisać, lubię marnować ludziom czas i sprawiać, że mają mniejszą samoocenę z powodu nierozwiązanych problemów :)

I knew it!

Proszę - http://finanse-online.hostzi.com

No wreszcie jest jakiś podgląd na sytuację
A więc chowasz tak jak mówiłem elementy "li", a pokazujesz "ul" którego wcale nie ukrywasz
to co chcesz zrobić to pokazać elementy "li" należące do elementu "ul"
czyli:

$('#sidebar li li')/*.show()*/.not('#sidebar .current_page_parent li').hide()
//                  ^ odkomentuj jeżeli te elementy nie są domyślnie pokazane

ten kod mógłby być trochę krótszy i znacznie bardziej logiczny gdybyś nadawał odpowiednie id lub klasy odpowiednim elementom

0

Wielkie dzięki pomogło. Ja cały czas kombinowałem z czymś takim:

 $('li li').not('.current_page_ancestor.current_page_parent').hide();

nie ma wyjścia muszę siąść przy JQuery w jakiś wolny dzień.

Btw. chciałbym nadać ID, byłoby znacznie wygodniej, ale metoda ma być uniwersalna dla Wordpress'a, dlatego ingerencja w kod menu nie wchodzi w grę. No chyba, że poprzez JQuery, ale skoro działa tak, to nie ma o czym mówić.

Jeszcze raz dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1