Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dodanie i usunięcie dodanej klasy
1992bartekk
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


Witam mam problem nad którym męczę się już zdecydowanie za długo być może ze zmęczenia. Mianowicie po kliknięciu w <li> rozsuwa się menu i dodana klasa "foo" do <li>. Moje pytanie brzmi jak zrobić by po ponownym kliknięciu w ten sam li klasa została usunięta.? Kod

  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow")
  3. });
  4.  
  5. $('#menu-item-310').click(function() {
  6. $('#menu-item-310').addClass('foo');
  7. });


Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu sprawdz czy klasa istnieje i jak to ja usun a jak nie to ja dodaj
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://api.jquery.com/toggleclass/
Albo: https://api.jquery.com/hasclass/ (z addClass i removeClass).
Go to the top of the page
+Quote Post
1992bartekk
post
Post #4





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


mam natomiast jeszcze jedno pytanie jak połączyć to by działało to z funkcją click, gdy klikam w konkretny element menu gdyż kod ten wykonywany jest niezależnie od tego gdzie kliknę. Poniżej aktualny kod:

  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow")
  3.  
  4. if ($("#menu-item-310").hasClass("foo")) {
  5. $("#menu-item-310").removeClass("foo");
  6. }
  7. else {
  8. $('#menu-item-310').addClass('foo');
  9. }
  10.  
  11. });
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


No, ale połączyłeś. Co jest więc nie tak?

Ten post edytował trueblue 2.11.2016, 19:46:03
Go to the top of the page
+Quote Post
1992bartekk
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


to że jest to jeden z paneli <li> w menu stąd też funcja ta wykonywana jest za kazdy razem gdy klikam w dany odnośnik w menu. Ten kod chyba będzie już temu bliższy o co mi chodzi...

  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow")});
  3.  
  4.  
  5. jQuery('#menu-item-310').click(function(){
  6. $(this).data('clicked', true);
  7. });
  8.  
  9.  
  10. if(jQuery('#menu-item-310').data('clicked')) {
  11. if ($("#menu-item-310").hasClass("foo")) {
  12. $("#menu-item-310").removeClass("foo");
  13. }
  14. else {
  15. $('#menu-item-310').addClass('foo');
  16. }
  17. }


ale niestety nie działa tak jak powinien

Ten post edytował 1992bartekk 2.11.2016, 19:53:49
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Tylko dla wybranego <li> ma być wykonany ten kod, czy dla dowolnego, ale pierwszego, który zostanie kliknięty?
Go to the top of the page
+Quote Post
1992bartekk
post
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


takich <li> w menu mam kilka menu-item-310, menu-item-311, menu-item-312, menu-item-313, menu-item-314

górna funkcja jest wykonywana dla każdego:

  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow")});


natomiast ta reszta ma być wykonywana dla każdego z osobna

  1. jQuery('#menu-item-310').click(function(){
  2. $(this).data('clicked', true);
  3. });
  4.  
  5.  
  6. if(jQuery('#menu-item-310').data('clicked')) {
  7. if ($("#menu-item-310").hasClass("foo")) {
  8. $("#menu-item-310").removeClass("foo");
  9. }
  10. else {
  11. $('#menu-item-310').addClass('foo');
  12. }
  13. }


dużo tych odnośników nie ma stąd też bez problemu mogę to zrobić w ten sposób jednak coś nie do końca działa... :/
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W każdym .menu-item-type-custom w atrybucie np. data-connected przechowuj id (lub klasę) elementu powiązanego.
Wtedy w funkcji klik pobierz wartość tego atrybutu i na jego podstawie sprawdź czy odpowiadający mu element ma klasę czy nie.
Go to the top of the page
+Quote Post
1992bartekk
post
Post #10





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


szczerze brzmi to dobrze... problem w tym ze nie za bardzo wiem jak to połączyć :/
Go to the top of the page
+Quote Post
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow");
  3. $('#'+$(this).data('connected')).toggleClass("foo");
  4. });


  1. <ul>
  2. <li data-connected="menu-item-310">abc</li>
  3. <li data-connected="menu-item-311">def</li>
  4. </ul>

Go to the top of the page
+Quote Post
1992bartekk
post
Post #12





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


szczerze to nie wiem czemu to nie działa tutaj podaję jeszcze dokładny kod menu

  1. <div id="navwrap" class="menu-mobile-container"><ul id="menu-mobile" class="menu_mobile"><li id="menu-item-310" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-310"><a href="#show1">Menu1</a>
  2. <ul class="sub-menu" style="display: block;">
  3. <li id="menu-item-300" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-300"><a href="http://localhost/sklep/cart/">Cart</a></li>
  4. <li id="menu-item-301" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-301"><a href="http://localhost/sklep/shop/">Sklep</a>
  5. <ul class="sub-menu" style="display: block;">
  6. <li id="menu-item-302" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-302"><a href="http://localhost/sklep/firma/">Firma</a></li>
  7. <li id="menu-item-309" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-309"><a href="http://localhost/sklep/oferta/">Oferta</a></li>
  8. </ul>
  9. </li>
  10. </ul>
  11. </li>
  12. <li id="menu-item-311" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-311"><a href="#show2">menu 2</a>
  13. <ul class="sub-menu" style="display: block;">
  14. <li id="menu-item-304" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-304"><a href="http://localhost/sklep/aktualnosci/">Aktualności</a></li>
  15. <li id="menu-item-299" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-299"><a href="http://localhost/sklep/checkout/">Checkout</a></li>
  16. <li id="menu-item-303" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-303"><a href="http://localhost/sklep/sklepy/">Sklepy</a>
  17. <ul class="sub-menu" style="display: block;">
  18. <li id="menu-item-305" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-305"><a href="http://localhost/sklep/kolekcja-2/">Kolekcja</a></li>
  19. <li id="menu-item-306" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-306"><a href="http://localhost/sklep/patronat/">Patronat</a></li>
  20. </ul>
  21. </li>
  22. </ul>
  23. </li>
  24.  
  25. </ul></div>
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Na tym kodzie na pewno nie zadziała, bo nie dodałeś atrybutów data-connected.
Ale może napisz jaki efekt chcesz osiągnąć.
Go to the top of the page
+Quote Post
1992bartekk
post
Post #14





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


ogólnie górny kod pozwala na rozwijanie i pokazywanie podmenu po kliknięciu. Ponowne kliknięcie to zwinięcie pokazanego menu. o


Ogólnie przy menu które można rozwinąć mam plus jednak tak jak zamierzałem dodanie klasy miało sprawić że zamiast plusa pojawia się minus po kliknięciu... ponowne kliknięcie i zwiniecie menu pojawia się plus itd...
Go to the top of the page
+Quote Post
trueblue
post
Post #15





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Czyli kiedy klikam #menu-item-301, to rozwija się .sub-menu z pozycjami 302 i 309.
A gdzie się pokazuje +/-?
Go to the top of the page
+Quote Post
1992bartekk
post
Post #16





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


no tam jest menu 3 poziomowe raczej #menu-item-310 i pokazuje wszystko co jest w jego .sub-menu... a plus jest w.... #menu-item-310 <a href="#show1">Menu1</a>

Ten post edytował 1992bartekk 2.11.2016, 20:37:34
Go to the top of the page
+Quote Post
trueblue
post
Post #17





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


To w takim razie po co te kombinacje.
Klikasz #menu-item-310 pokazujesz .sub-menu, a klasę ustawiasz dla elementu <a> (w tym <li>).
Go to the top of the page
+Quote Post
1992bartekk
post
Post #18





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 7.12.2014

Ostrzeżenie: (0%)
-----


no tak ale to ta sama zasada musi class zostać dodany do aktualnie aktywnego menu i class musi zostać usunięty po ponownym kliknięciu czy źle myśle ?

odp. dla potomnych!!! temat do zamknięcia!!! (IMG:style_emoticons/default/smile.gif)

  1. $(".show_menu ul > .menu-item-type-custom").click(function() {
  2. $(this).find('.sub-menu').toggle("slow");
  3. $( this ).toggleClass( "foo" );
  4. });
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:31