Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] wyszukiwanie i obsluga kilku przyciskow
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
MorF
Witajcie mam na swojej stronie kilka takich elementow ktore user moze sobie pokazywac/ukrywac

  1. <A id="PomocBtn" HREF="#">Pomoc</A>
  2. <div id="PomocTresc">
  3. Tresc</div>
  4.  
  5. <A id="NotowaniaBtn" HREF="#">Notowania</A>
  6. <div id="NotowaniaTresc">
  7. Tresc</div>
  8.  
  9. <A id="KontaktBtn" HREF="#">Kontakt</A>
  10. <div id="KontaktTresc">
  11. Tresc</div>
  12. ...

takich 'bloczkow' jest dynamiczna ilosc, w zaleznosci od podstrony na ktorej sie znajduje, chcialbym z gory napisac tak zeby kazdy
"przycisk" z id= "XXXBtn" oblsugiwal diva o id="XXXTresc"

czy jest cos takiego mozliwe? Napisalem taka funkcje ale chyba nie jest poprawna bo nie dziala
  1. $(document).ready(function(){
  2.  
  3.  
  4. $("div[id$='Btn']").click(function(event)
  5. {
  6.  
  7. $("div[id$='Btn']").each(function(i){
  8.  
  9. if ($("div[id$='Tresc']").is(":hidden"))
  10. {
  11. $("div[id$='Tresc']").slideDown("slow");
  12. } else {
  13. $("div[id$='Tresc']").slideUp("slow");
  14. }
  15. }
  16.  
  17. });
  18.  
  19. });


Bardzo dziekuje za pomoc
erix
Hmm, a nie możesz nadać tym klawiszom klasy...?

Wtedy dużo łatwiej byłoby zbindować zdarzenia, wtedy odczytujesz id z przycisku i podstawiasz:
Kod
$('#button'+id)...
MorF
Cytat(erix @ 2.03.2009, 22:42:41 ) *
Hmm, a nie możesz nadać tym klawiszom klasy...?

Wtedy dużo łatwiej byłoby zbindować zdarzenia, wtedy odczytujesz id z przycisku i podstawiasz:
Kod
$('#button'+id)...


Ok troche zmienilem kod teraz jest
  1. <A id="PomocBtn" HREF="#">Pomoc</A>
  2. <div id="PomocBtnTresc">
  3. Tresc</div>
  4.  
  5. <A id="NotowaniaBtn" HREF="#">Notowania</A>
  6. <div id="NotowaniaBtnTresc">
  7. Tresc</div>
  8.  
  9. <A id="KontaktBtn" HREF="#">Kontakt</A>
  10. <div id="KontaktBtnTresc">
  11. Tresc</div>
  12. ...


a funkcje napisalem tak
  1. $("a[id$='Btn']").click(function()
  2. {
  3.  
  4. if ($($(this).attr('id')+'Tresc').is(":hidden"))
  5. {
  6. $(
  7. $(this).attr('id')
  8. +'Tresc').slideDown("slow");
  9. } else {
  10. $(
  11. $(this).attr('id')
  12. +'Tresc').slideUp("slow");
  13. }
  14.  
  15.  
  16. });

ale choroba nadal nie dziala ;/
erix
Kombinujesz trochę... ;/
Napisałem, dodaj klasy - będzie zapewne i szybciej parsowane, bo nie będzie trzeba porównywać tak stringów, to raz.

Drugi raz, nie skorzystałbyś z gotowych bibliotek a'la accordion?
MorF
Cytat(erix @ 2.03.2009, 22:58:28 ) *
Napisałem, dodaj klasy - będzie zapewne i szybciej parsowane, bo nie będzie trzeba porównywać tak stringów, to raz.

Nie rozumiem czym nadanie klas mialoby tutaj przyspieszyc... i tak i tak musze sklejac stringi

parserowanie jest wporzadku, bo
  1. if ($($(this).attr('id')+'Tresc').is(":hidden"))
  2. {
  3. $(
  4. $(this).attr('id')
  5. +'Tresc').slideDown("slow");
  6. } else {
  7. $(
  8. $(this).attr('id')
  9. +'Tresc').slideUp("slow");
  10. alert($(this).attr('id')+'Tresc');
  11. }

woła mi alert z poprawna trescia natomiast nie wiem dlaczego nie wykonuje sie slide
nospor
mala podpowiedź:
nie :$('id')
a: $('#id')

i juz wszystko jasne winksmiley.jpg
erix
Cytat
Nie rozumiem czym nadanie klas mialoby tutaj przyspieszyc... i tak i tak musze sklejac stringi

Ano w tym, że porządne przeglądarki mają zaimplementowaną obsługę wyszukiwania elementów po klasie - https://developer.mozilla.org/en/DOM/docume...entsByClassName

Nie mam teraz odpalonych źródeł jQ, ale podejrzewam, że jeśli ma taką możliwość, to framework z tej funkcji korzysta. A to chyba oczywiste, że funkcje zaimplementowane w przeglądarce są szybsze niż własne. winksmiley.jpg

A to, o czym wspomniał ~nospor, to swoją drogą. winksmiley.jpg
MorF
ok podziekował bardzo,
obszedlem w troche inny sposob ale zawsze sie czlowiek czegos nauczy:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.