jQuery funktion mehrmals ausführen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jQuery funktion mehrmals ausführen

    Hallo,

    ich habe folgendes Problem.
    In einem div ist ein Monatskalender, wenn man auf ein Datum klickt kommt im anderen div die Termine zum angeklickten Tag.

    Das ganze funktioniert nicht wirklich... In beiden divs kommen dann die Termine...

    Anbei mein Code der jQuery Funktion. Hoffe mir kann jemand helfen

    PHP-Code:
    jQuery(document).ready(function($){
    var 
    remoteUrl 'events_auslesen.php';
    var 
    remoteUrl2 'events_calender.php';
    var 
    remoteCache = new Array();
    $(
    '#event-calender-widget a').each(function(i,item){
    var 
    linkId item.id;
    var 
    linkUrl remoteUrl+'?date='+linkId;
    var 
    linkUrl2 remoteUrl2+'?date='+linkId;
    $(
    this).click(function(){            
    var 
    calenderEvents = $('#event-calender-results');            
    calenderEvents.slideUp('fast',function(){            
    if( 
    remoteCache[linkId] != undefined ) { 
    calenderEvents.html(remoteCache[linkId]);
    calenderEvents.slideDown('fast');
    } else {
    calenderEvents.load(linkUrl,function(){
    remoteCache[linkId] = calenderEvents.html();
    calenderEvents.slideDown('fast');
    });
    }
    });
    return 
    false;
    });

    $(
    this).click(function(){            
    var 
    calenderEvents2 = $('#event-calender-widget');            
    calenderEvents2.slideUp('fast',function(){            
    if( 
    remoteCache[linkId] != undefined ) { 
    calenderEvents2.html(remoteCache[linkId]);
    calenderEvents2.slideDown('fast');
    } else {
    calenderEvents2.load(linkUrl2,function(){
    remoteCache[linkId] = calenderEvents2.html();
    calenderEvents2.slideDown('fast');
    });
    }
    });
    return 
    false;
    });

    });
    }); 
    Zuletzt geändert von hansmansa; 14.02.2011, 08:58.

  • #2
    Mittlerweile habe ich den Code geändert und es funktioniert alles bis auf folgenden Punkt!

    Wenn ich das erste mal ein neuen Tag anklicke im Kalender geht noch alles, beim zweiten Klick auf den Kalender tut sich dann nichts mehr...

    Mein verwendeter Code:
    PHP-Code:
    jQuery(document).ready(function($){
    var 
    remoteUrl 'events_auslesen.php';
    var 
    remoteUrl2 'events_calender.php';
    $(
    '#event-calender-widget a').each(function(i,item){
    var 
    linkId item.id;
    var 
    linkUrl remoteUrl+'?date='+linkId;
    var 
    linkUrl2 remoteUrl2+'?date='+linkId;
    $(
    this).click(function(){            
    var 
    calenderEvents = $('#event-calender-results');            
    calenderEvents.slideUp('fast',function(){            
    calenderEvents.load(linkUrl,function(){
    calenderEvents.slideDown('fast');
    });
    });
    var 
    calenderEvents2 = $('#event-calender-widget');            
    calenderEvents2.slideUp('fast',function(){            
    calenderEvents2.load(linkUrl2,function(){
    calenderEvents2.slideDown('fast');
    });
    });
    return 
    false;
    });
    });
    }); 

    Kommentar


    • #3
      hat keiner einen Tip?

      Kommentar


      • #4
        Offenbar nicht. Wenn du dir die Mühe gemacht hättest, den Code lesbar zu formatieren (Einrückungen) und das Problem etwas genauer zu beschreiben (evtl. sogar mit Online-Beispiel), hätte sich vielleicht auch jemand die Mühe gemacht, es zu lesen
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Ich habe deinen Code auch nicht wirklich gelesen, aber schon die erste Zeile zusammen mit der Fehlerbeschreibung macht klar, dass es nicht funktionieren kann, weil du die click-Handler bei document.ready bindest. Das passiert genau einmal. Wenn du dann Teile des Dokuments austauscht, ist an die neuen Teile natürlich kein click-Handler gebunden.

          Die Lösung ist einfach: Nach dem Laden der neuen Links musst du den click-Handler an diese binden so wie du es initial per document.ready gemacht hast.

          Kommentar


          • #6
            // Naja, blick nicht so ganz durch deinen Code durch, aber ich denke mal du suchst live().

            Kommentar


            • #7
              Habs jetzt hinbekommen Es war live ^^

              Kommentar

              Lädt...
              X