Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] jquery mehrmaliges event verhindern?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] jquery mehrmaliges event verhindern?

    Guten abend,

    ich spiele seite heute mit dem jquery-framework rum und bin da auf ein "problem" gestoßen ... siehe unten

    Script:
    Code:
    $("a").click(function(event)
    {
    	event.preventDefault();
    		
    	$.get($(this).attr("href"), function(data)
    	{
    		$("#bla").fadeOut('fast');
       		$("#bla").html(data);
       		$("#bla").fadeIn('slow');
     	});	
    });

    Html:
    Code:
    <P><A href="page1.txt">Seite 1</A></P>
    <P><A href="page2.txt">Seite 2</A></P>
    <P><A href="page3.txt">Seite 3</A></P>
    		
    <P>
    		
    	<DIV id="bla">
    	</DIV>	
    			
    </P>
    ich laden mit den links inhalt aus einer txt datei und schreibe es in mein div mit der id "bla" ... soo ... mein problem ist nun dass wenn ich mehrmals hintereinander auf einen der links klicke dann blinkt das halt so oft wie ich gedrückt habe ... is ja auch logisch aber kann ich den link irgendwie sperren oder gibts da irgendeine andere möglichkeit zu verhindern dass wärend eine aktion ausgeführt wird kein anderer link geladen werden kann ... oder so^^

    ... danke schonmal
    Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
    Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.


  • #2
    Den Event kannst du nicht verhindern - aber deine Reaktion darauf kann jeweils unterschiedlich ausfallen.
    Bspw. mittels eines Flags kannst du doch ganz einfach entscheiden, ob du etwas tun willst, oder ob gerade noch ein anderer Verarbeitungsprozess aktiv ist.

    Kommentar


    • #3
      Selber Schuld wenn jemand so oft drauf klickt

      Du könntest die alte Animation direkt am Anfang der Funktion beenden, also mit sowas wie $("#bla:animated").stop(true, true); wird eben die Animation (und alle folgenden unterbrochen). Somit wird eben die Animation des letzten Klicks noch komplett ausgeführt.

      Oder du setzt am Anfang der Funktion eine Variable "lock" auf true, am Ende der Funktion dann wieder auf false. Und bei jedem mal wenn die Funktion aufgerufen wird wird überprüft ob "lock" auf false steht, wenn nicht weißt du dass die Funktion gerade schon ausgeführt wird und du machst nichts, also der Klick hat keine Auswirkung.

      Kommentar


      • #4
        cool danke ... ich habs jetzt mit "$("#bla:animated").stop(true, true);" gelöst ... hab da aber noch ne frage ... wenn ich auf den link klicke ... dann sehe ich in meinem div den geladenen content dann klappt er es zu und dann klappt er es aus ... also ich den geladenen content schon vor den animationen ... kann ich dass auch verhindern oder bin ich zu pingelig^^ xD
        Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
        Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

        Kommentar


        • #5
          Ja du kannst den Content in ner Callback Funktion laden.

          Code:
          $("#bla").fadeOut('fast', function() {
              $("#bla").html(data);
              $("#bla").fadeIn('slow');
          });

          Kommentar


          • #6
            danke ...

            mit der callback funktion kann ich das "stop" jetzt auch weglassen ... dankeschön

            Code:
            $("a").click(function(event)
            {
               event.preventDefault();
               //$("#bla:animated").stop(true, true);
            		
               $.get($(this).attr("href"), function(data)
               {
                  $("#bla").fadeOut('fast', function() 
                  {
                     $("#bla").html(data)
                                 .fadeIn('slow');
                  });
               });
            });
            ... ist geschlossen ... gruß Codercrush
            Ich würde so gern die Welt verändern doch Gott gibt mir den Quellcode nicht.
            Compiler sind wie Franzosen.. schnauzen einen immer nur an, wenn man ihre Sprache nich perfekt spricht.

            Kommentar

            Lädt...
            X