Autor Zpráva
Romca
Profil *
Dobrý den,

mám div id kalendář a při načtení document. ready si do něj vypíšu kalendář. Mám v něm dvě tlačítka předchozi a další měsíc. Který jsou pod id tehdy až když se mi vypíše ten kalendář. Dostávám se k nim pomocí document.ready -> #kalendar.load -> this.find #kprava -> logické operace + #kalendar.load s novými daty. Tímto stylem se mi to provede pouze jednou a pak to umře. Vnitřně tuším proč mě to padá, ale nenapadá mě jak to opravit. (pozn. pokud to vypisuji do jiného divu, tak to funguje správně. Ale výhra není mít dva kalendáře jeden na klikání a druhý o div vedle, který by se příslušně měnil). Snažně prosím o pomoc, či návod a nebo jen myšlenku správným směrem. Děkuji všem co se zúčastní konverzace a přispějí svou trochou do mlýna.


Html - začátek:
<div id="kalendar">
</div>

ajax.js:
$(document).ready(function(){

  // nastav aktualni datum
  datum = new Date(); 
  mesic = datum.getMonth() + 1;
  rok = datum.getFullYear()
  
  // nacti kalendar
  $("#kalendar").load("ajax_kalendar.php", function(){
    //klikem na prave posun o mesic vpred 
    $(this).find("#kprava").click(function(){  
      mesic++;
      if(mesic>12)
      {
        mesic=1;
        rok++;      
      }   
      $("#kalendar").load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
    });
    //klikem na leve posun o mesic vzad 
    $(this).find("#kleva").click(function(){  
      mesic--;
      if(mesic<1)
      {
        mesic=12;
        rok--;      
      }   
      $("#kalendar").load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
    });  
  });
});

Html - po načtení stránky:
<div id="kalendar">
 <table>
 <th id="kleva">leva</th>
 <th>hlava kalendare</th>
 <th id="kprava">prava</th>
 <td>... telo kalendare
 </table>
</div>
Romca
Profil *
Za tu dobu co jste se tady předháněli v nápadech jak vyresit muj problem, tak jsem prisel na reseni s pomoci uzivatele Ericsko na jinem programovacim foru. Reseni je tedy nasledujici, kdyby mel nekdo podobny problem:

http://api.jquery.com/live/
$( document ).on( events, selector, data, handler );        // jQuery 1.7+

moje řešení:
$(document).ready(function(){

  // nastav aktualni datum
  datum = new Date(); 
  mesic = datum.getMonth() + 1;
  rok = datum.getFullYear();
  
  // nacti kalendar
  $("#kalendar").load("ajax_kalendar.php");  
});

// po kliknuti na levou sipku o jeden mesic zpet
$(document).on("click", "#kleva", function() {
  mesic--;
  if(mesic<1)
  {
    mesic=12;
    rok--;      
  }   
  $("#kalendar").load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
});

// po kliknuti na pravou sipku o jeden mesic vpred
$(document).on("click", "#kprava", function() {
  mesic++;
  if(mesic>12)
  {
  mesic=1;
  rok++;      
  }   
  $("#kalendar").load("ajax_kalendar.php",{k_mesic: mesic, k_rok: rok});
}); 
aDAm
Profil
řešit se to dá samo i bez jQuery. Jen stačí si tam loadovat jen samotný kalendář bez šipek a nebo těm šipkám po loadu znova bindovat akci.
Jednoduše, poprvé ti to funguje protože se ti na ty šipky pověsí akce click, jenže ty pak tento html prvek přepíšeš nový proto neví co má dělat.
Romca
Profil *
Určitě je řešeních povícero. Např nechat kalendář bez šipek a šipky si dat mimo a pak to absolutně pozicovat se záporným marginem aby me to designove sedelo. Pak je ale problem s prohlizecema. IE vs svet jinak chapou slovicko margin a chtelo by to nejak osetrit. Urco se daji i dalsi reseni. Ale to co jsem zvolil me prislo nejlepsi a nejmin pracne. Proste klauzule document.on pracuje jiz s nactenym souborem a timpadem odpadaji predesle problemy.
aDAm
Profil
wtf? Jaký zase margin? Nevím sice jak tvuj web vypadá ale šipečky se dají řešit třeba i nad konkrétní tabulkou s daty, to je jedno.

Ad. metoda "on" zřejmě tedy nevíš co to je. Pomocí toho jak si to napsal v podstatě nad celým dokumentem zaregistruješ naslouchače co hleda #kprava a jemu přiřazuje danou akci, tady se o žádnou práci se souborem nejedná.
Romca
Profil *
Dobre, spatne jsem to napsal priznavam. Vim co myslite, jen jsem to chtel priblizit lajkum a slovo naslouchac me opravdu nenapadlo. Za to mate zlatyho bludistaka. Kolega z oboru, z jineho programovaciho fora, se kterym jsem to resil, zde udelal nahled kalendare bez stylu. http://kalendar.ixy.sk/
Uznejte ze sipky nekde mimo by nebyly pekne, proto me napadla verze s vykreslenym divem id="kalendar" a nad nej umistit absolutni div s sipkama. A ten div zapornym margin posunout do headeru jak mam zde videt. Uznavam byla by to zrudnost, proto jsem take hledal jine reseni. S pozdravem Romca.
Kubo2
Profil
Romca:
Kolega z oboru, z jineho programovaciho fora, se kterym jsem to resil, zde udelal nahled kalendare bez stylu. http://kalendar.ixy.sk/
Hm, zaujimave. Keby neviem co to ma robit, rozhodne by ma nenapadlo ma na tie sipky kliknut. Ziada si to minimalne cursor: pointer.
edit: sorac, az teraz som si vsimol, ze si napisal bez stylu.

Nauč sa prosím ťa využívať možnosti diakritiky a členenia príspevku do logických častí, takzvaných odstavcov. Potom bude tvoj text hneď čitateľnejší.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: