2017-05-11 4 views
0

Wie funktioniert die Javascript Funktion nur einmal?Wie funktioniert JavaScript nur einmal?

Ich brauche auto-klicken Sie auf das li-Element, die Verknüpfung Benutzer kommt zur Website. web.com/#2 (Listenauftrag - 2 1 3 4 5), web.com/#4 (Listenauftrag - 4 1 2 3). aber ich will als Benutzer bleiben in der Website mit Hash-URL-Liste Elemente bleiben in ihren Orten, dann klicken Benutzer zum Beispiel auf 3-Liste Element muss er bleiben und seinen Platz so Liste (4 1 2 3). Ich brauche nur die Reihenfolge der Liste durch URL-Hash auf der Lade-Seite ändern.

+1

Nicht sicher, dass ich vollständig verstanden habe, was Sie versuchen zu tun, aber versuchen Sie '$ ('li') hinzuzufügen .off ('click'); 'im Click-Handler –

+2

Was möchten Sie tun? Es ist sehr schwer zu verstehen – Anokrize

+0

Ich habe meine Frage bearbeitet. Vielleicht ist es klarer? – Mantas

Antwort

0

Ich löste es

 if (window.location.hash) { 

      $('li').one('click',function() { 
       if (!window.run){ 
      $(this).prependTo($(this).parent()); 
        window.run = true; 
       } 
     }); 
     $(document).ready(function() { 
      var id = window.location.hash; 
      $(id).trigger('click'); 
     }); 
    } 
+0

Das ist überflüssig; das '.one' stellt bereits sicher, dass es nicht zweimal läuft, also gibt es keinen Grund,' window.run' auch als Flag zu verwenden. –

0

In Ihrem speziellen Fall die einfachste Lösung verwenden .one(), das entbindet den Handler, nachdem er zum ersten Mal ausgeführt wird:

$('li').one('click',function() { ... } 

Ein weiterer Ansatz ist die haben Funktion neu definieren sich zu einem No-Op, nachdem es ausgeführt wird. Dies kann in einigen Fällen nützlich sein, wenn es keinen geeigneten Eventhandler gibt, der gelöst werden kann:

var oneTimeFunction = function() { 
    console.log("This will only happen once."); 
    oneTimeFunction = function() {}; 
}