Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][JavaScript][PHP] PHP iteracja id i jquery
Forum PHP.pl > Forum > Przedszkole
pjamalia
Poniżej umieszczę kawałek kodu, chodzi mi o to że dla tworzonego dynamicznie id="cat"... każdego anchorka chciałbym też tak samo dynamicznie obsłużyć css za pomocą JQUERY. Obecnie nie wychodzi mi to wcale. Czy mógłbym poprosić o pomoc na tym przykładzie?

  1. <!-- css - menu.css for class="menu" -->
  2. <table class="menu" id="categories_menu">
  3. <?php
  4. $counter = 0;
  5. if(!empty($arg['cat']))
  6. {
  7. foreach($arg['cat'] as $row)
  8. {
  9. $counter++;
  10. ?>
  11. <tr class="menu">
  12. <td class="menu" id="cat<?php echo $counter; ?>">
  13. <span id="categorie_text">
  14. <?php
  15. //echo $row['title'];
  16. echo anchor('po/poCategories/'.$row['category_id'],$row['title']);
  17. ?>
  18. </span>
  19.  
  20. </td>
  21.  
  22. </tr>
  23. <?php
  24. }
  25. }
  26. ?>
  27.  
  28. <?php
  29. if(!empty($products['cat']))
  30. {
  31. foreach($products['cat'] as $row)
  32. {
  33. $counter++;
  34. ?>
  35. <tr class="menu">
  36. <td class="menu" id="cat<?php echo $counter; ?>">
  37. <span id="categorie_text">
  38. <?php
  39. //echo $row['title'];
  40. echo anchor('po/poCategories/'.$row['category_id'],$row['title']);
  41. ?>
  42. </span>
  43.  
  44. </td>
  45.  
  46. </tr>
  47. <?php
  48. }
  49. }
  50. ?>
  51. </table>
  52.  
  53. <script type="text/javascript">
  54. $(document).ready(function()
  55. {
  56.  
  57. $("#cat1").mouseover(function()
  58. {
  59. $("#cat1").css(
  60. {
  61. "background-color":"transparent"
  62. });
  63. $("#cat1").css(
  64. {
  65. "-moz-border-radius":"13px",
  66. "border-radius":"13px",
  67. "-khtml-border-radius":"13px",
  68. "-icab-border-radius":"13px",
  69. "-webkit-border-radius":"13px",
  70. "-khtml-border-radius":"13px",
  71. "background-color":"red"
  72. });
  73. });
  74. $("#cat1").mouseout(function()
  75. {
  76. $("#cat1").css(
  77. {
  78. "background-color":"transparent"
  79. });
  80. $("#cat1").css(
  81. {
  82. "-moz-border-radius":"3px",
  83. "border-radius":"3px",
  84. "-khtml-border-radius":"3px",
  85. "-icab-border-radius":"3px",
  86. "-webkit-border-radius":"3px",
  87. "-khtml-border-radius":"3px",
  88. "background-color":"#3366CC"
  89. });
  90. });
  91. </script>
hyhyhy
Trochę niezrozumiałe jest dla mnie Twoje pytanie, ale - na pewno widzę jedną rzecz - w jQuery.css() składnia jest następująca

css("element", "wartość")

a nie

css("element":"wartosc") jak jest w Twoim kodzie.
http://api.jquery.com/css/
pjamalia
Z pewnej mądrej książki tak się nauczyłem. Ok ale to nie odnośnie tego problemu. W kodzie PHP przy każdym id="cat" dostawiana jest kolejna cyfra od $counter. W wyniku id ma wartości dla kolajno wyswietlanych kategorii cat1, cat2, cat3.

W JQUERY tutaj kod działa mi kiedy najadę kursorem myszki na id="cat1" tylko w jaki sposób też dynamicznie w JQUERY mogę tworzyć te zdarzenia żeby ręcznie nie wklepywać po kolei dla cat1, cat2, cat3... itd.

pozdrawiam
mls
Pomijając problem - zdaje się, że w swoim kodzie masz wiele razy <span id="categorie_text">. Jak myślisz, dobrze to czy źle?
pjamalia
no racja kurcze, poprawie sobie dzieki
peter13135
nie wiem czy dobrze rozumiem. Masz kilka elementów o id typu cat1, cat2, cat3, ..., catn i do każdego chcesz przypisać akcje ?
Do każdego z tych elementów daj class="costam" i na podstawie tego costam przechwytuj eventy. Czyli $(".costam").onclick(...);
Id klikniętego elementu możesz wyciągnąć za pomocą metody attr().
pjamalia
to na Twoim przykładzie jak mogę to zorganizować w kodzie? Kombinuję w ten sposób:

Kod
<script type="text/javascript">
    $(document).ready(function()
    {
        
        $(".td.even").mouseover(function()
        {    
            $(".td:even").attr("id").css(
            {
                "background-color":"transparent"
            });
            $(".td:even").attr("id").css(
            {
                "-moz-border-radius":"13px",
                "border-radius":"13px",
                "-khtml-border-radius":"13px",
                "-icab-border-radius":"13px",
                "-webkit-border-radius":"13px",
                "-khtml-border-radius":"13px",
                "background-color":"red"
            });            
        });
        $(".td:even").mouseout(function()
        {    
            $(".td:even").attr("id").css(
            {
                "background-color":"transparent"
            });
            $(".td:even").attr("id").css(
            {
                "-moz-border-radius":"3px",
                "border-radius":"3px",
                "-khtml-border-radius":"3px",
                "-icab-border-radius":"3px",
                "-webkit-border-radius":"3px",
                "-khtml-border-radius":"3px",
                "background-color":"#3366CC"  
            });
        });    
    });
    </script>


Kurcze próbuję teraz wyświetlić sobie alert z klikniętym td żeby zobaczyc ID tego elementu ale ID jest złe ponieważ PHP ziterowało mi od cat1 do cat6 a w JQUERY ID mam cały czas cat1 niezależnie na który div kliknę:

  1. /* wybór kategorii i ID elementu */
  2. $("td.menu").click(function()
  3. {
  4. var IDtd = $("td.menu").attr("id");
  5. alert("element wybrany z ID to "+IDtd);
  6. });
  7.  


Czy jest ktoś w stanie odpowiedzieć mi na ten tamat?
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.