Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Dialog boxy
Forum PHP.pl > Forum > Przedszkole
pustelnik
Panowie bo zaraz mnie coś trafi...
nie mogę sobie poradzić z dialog boxami...


generuje w pętli jakąś ilość dialogboxów i openerów

  1. while ($arrRow = mysql_fetch_array($objRst))
  2. {
  3. $i++;
  4.  
  5. echo "<div class='dialog".$i."' > DIALOG BOX </div>";
  6. ...
  7. ...
  8. ...
  9.  
  10. <a class='opener' id='".$i."' href='#' onclick=\"$('.dialog' + $(this).attr('id')).load('sprz_pa.php?symbol=".StringToHTML($arrRow["SYM"])."'); return false\">


i opatruje to skryptem w osobnym pliku ze skryptami.

  1. $(function() {
  2. $( ".dialog" + $(this).attr('id') ).dialog({
  3.  
  4. height: 550,
  5. width: 850,
  6. autoOpen: false,
  7. show: {
  8. effect: "blind",
  9. duration: 400
  10. },
  11. hide: {
  12. effect: "blind",
  13. duration: 800
  14. }
  15. });
  16.  
  17. $( ".opener" ).click(function() {
  18. $( ".dialog" + $(this).attr('id') ).dialog( "open" );
  19. });


mam to zrobione i działa..
ale w pliku js każdy dialogbox jest rozpisany osobno do nr 20 co jest bez sensu.
stanąłem w miejscu i o ile zawartość ładnie pakuje się do odpowiedniego boxa o tyle te boxy są cały czas widoczne..
czyli skrypt z pliku js nie działa..

da się to zrobić z automatu ?
PrinceOfPersia
Cytat
da się to zrobić z automatu ?

da się, ale wklej pozostałą zawartość strony. (albo chociaż HTML, który PHP ci wypluwa)
pustelnik
  1. <div class='dialog1' > DIALOG BOX </div>
  2.  
  3. <tr class='row' onmouseover='this.className="classOver"' onmouseout='this.className="row"'>
  4.  
  5. <td class='nazwa'>
  6.  
  7. <a class='opener' id='1' href='#' onclick="$('.dialog' + $(this).attr('id')).load('sprz_pa.php?symbol=51111'); return false">
  8. <img src='images/traffic.png' >
  9. </a>
  10.  
  11. </td>
  12. </tr>
  13.  
  14. <div class='dialog2' > DIALOG BOX </div>
  15.  
  16. <tr class='row' onmouseover='this.className="classOver"' onmouseout='this.className="row"'>
  17.  
  18. <td class='nazwa'>
  19.  
  20. <a class='opener' id='2' href='#' onclick="$('.dialog' + $(this).attr('id')).load('sprz_pa.php?symbol=32524'); return false">
  21. <img src='images/traffic.png' >
  22. </a>
  23.  
  24. </td>
  25. </tr>
  26.  


i tak po kolei z numerami 3, 4, 5 ...
PrinceOfPersia
Cytat
ale w pliku js każdy dialogbox jest rozpisany osobno do nr 20 co jest bez sensu.


bo wystarczyłoby zrobić tak:
[JAVASCRIPT] pobierz, plaintext
  1. $(function() {
  2. $( ".dialog" ).dialog({
[JAVASCRIPT] pobierz, plaintext

(i łapie dla wszystkich dialogów)

zamiast tak:
[JAVASCRIPT] pobierz, plaintext
  1. $(function() {
  2. $( ".dialog" + $(this).attr('id') ).dialog({
[JAVASCRIPT] pobierz, plaintext

(nawiasem mówiąc zastanawiam się skąd on to bierze 'id' w tym momencie, chyba w tym był błąd. Mówię o kodzie na początku, tam w 'click' powinno być dobrze).

EDIT: tzn. to raczej nie zadziała, bo te dialogi wcale nie mają klasy dialog, tylko dialog1, dialog3 itp.
podmień jeszcze:
  1. echo "<div class='dialog".$i."' > DIALOG BOX </div>";

na:
  1. echo "<div class='dialog dialog".$i."' > DIALOG BOX </div>";






Pustelnik
no tak, teraz ładnie divy się ukrywają, ale content nie jest do nich ładowany i nie pokazują się po kliknięciu

Cytat
(nawiasem mówiąc zastanawiam się skąd on to bierze 'id' w tym momencie, chyba w tym był błąd. Mówię o kodzie na początku, tam w 'click' powinno być dobrze).


w ferworze walki z tym skryptem musiałem niechcący usunąć z diva id=".$i"
pustelnik
EDIT//
ok, zrobiłem literówkę.
Działa doskonale wink.gif
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.