Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jquery - menu z hide/show div'ów na początku oraz po kliku?
marcus755
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


  1. <ul>
  2. <li><a id="test-menu-1" href="#">test1</a></li>
  3. <li><a id="test-menu-2" href="#">test2</a></li>
  4. <li><a id="test-menu-3" href="#">test3</a></li>
  5. </ul>
  6.  
  7. <div class="test">
  8. <div class="tester" id="test-1">test-1</div>
  9. </div>
  10. <div class="test">
  11. <div class="tester" id="test-2">test-2</div>
  12. </div>
  13. <div class="test">
  14. <div class="tester" id="test-3">test-3</div>
  15. </div>


1. event który wykonuje się na początku:
jeżeli, np. w <li> z id="test-menu-2" znajdzie class="selected",
wtedy robi display:block; na <div id=test-2"> - reszta div'ów zmienia na display:none;
jeżeli w innymi <li> znajdzie class="selected", robi analogicznie jak powyżej...

2. event na kliku
jeżeli kliknę, w link i doda mi w <li>, w który kliknąłem class="selected",
wtedy jeżeli to będzie np. <li class="selected"><a id="test-menu-3" href="#">test3</a></li>,
wtedy robi display:block; na <div id=test-3"> - reszta div'ów zmienia na display:none;
jeżeli kliknę w inny <li> i doda class="selected", robi analogicznie jak powyżej...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Co już napisałeś?
Go to the top of the page
+Quote Post
marcus755
post
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


if ( $('.test li.selected a')) {
$(".tester").show();
} else {
$(".tester").hide();
}

$(".test li.selected a").click(function (e) {
var className = $(this).attr("id");
$(".tester").each(function () {
$(this).toggle($(this).hasClass(className));
});

e.preventDefault();
});

z tym, że mam problem z dynamicznym przydzielaniem po id z menu względem id z div'ów...

Ktoś wie jak to zrobić?
Na pewno coś takiego ktoś z Was kiedyś robił....
ew. może jakiś ktoś z Was zna szybki sposób,
nawet nie muszą być użyte te klasy i id,
ważne by działało...:-)

Ten post edytował marcus755 18.07.2014, 15:37:35
Go to the top of the page
+Quote Post
trueblue
post
Post #4





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

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


  1. $(".test li a").click(function (e) {
  2. $(this).parent().addClass('selected');
  3. $('.tester').hide();
  4. $('#'+$(this).attr("id").replace('-menu','')).show();
  5. e.preventDefault();
  6. });

Trochę chyba nieprecyzyjnie opisałeś. Click powinno być na każdym "a", a nie takim gdzie "li.selected". Ale w tym przypadku każdy "li" klikanego "a" dostawałby klasę "selected". Doprecyzuj.

Ten post edytował trueblue 18.07.2014, 15:44:25
Go to the top of the page
+Quote Post
marcus755
post
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


już mówię o co chodzi...
wchodzę na site, mam na "dzień dobry" zaszyty za pomocą jquey w <li> klasę selected,

po pierwsze:
jak zrobić, żeby dynamicznie w zależności w którym <li> bedzie klasa selected,
przyporządkował mi selected,
w tym przypadku jest w <li>, gdzie <a href="#" ... ma id="test-menu-2"> (czyli druga pozycja w menu),
robi display: block dla <div class="tester" id="test-2">test-2</div>, a reszta div'ów jest ukryta (display:none;)

po drugie gdy kliknę w któryś link w menu, dajmy na to: link id="test-menu-3" znajdujący się w <li>,
wtedy dodaje mi selected do tego trzeciego <li> a ukrywa selected z tego poprzedniego,
jednocześnie ukrywa poprzedniego div'a z id="test-2", a pokazuje div'a z id="test-3"...

<ul>
<li><a id="test-menu-1" href="#">test1</a></li>
<li class="selected"><a id="test-menu-2" href="#">test2</a></li>
<li><a id="test-menu-3" href="#">test3</a></li>
</ul>

<div class="test">
<div class="tester" id="test-1">test-1</div>
</div>
<div class="test">
<div class="tester" id="test-2">test-2</div>
</div>
<div class="test">
<div class="tester" id="test-3">test-3</div>
</div>
Go to the top of the page
+Quote Post
trueblue
post
Post #6





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

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


Pierwszy z małą modyfikacją, bo nie masz "li" poprzedzonych elementem z klasą "test".
  1. $('li a').click(function (e) {
  2. $('li').removeClass('selected');
  3. $(this).parent().addClass('selected');
  4. $('.tester').hide();
  5. $('#'+$(this).attr("id").replace('-menu','')).show();
  6. e.preventDefault();
  7. });


Drugi:
  1. $('.tester').hide();
  2. $('#'+$('li.selected a').attr('id').replace('-menu','')).show();


Ten post edytował trueblue 18.07.2014, 16:10:57
Go to the top of the page
+Quote Post
marcus755
post
Post #7





Grupa: Zarejestrowani
Postów: 158
Pomógł: 1
Dołączył: 6.12.2012

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


Wielkie Dzięki - Mistrzu:-)
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: 23.08.2025 - 01:35