2016-05-28 5 views
-1

Wie erstellt man eine Funktion jQuery one() auf $(document).ready, ich kenne die Syntax für Click-Ereignisse und Selektoren, aber ich weiß nicht, wie man eine Funktion, die nur auf Dokument bereit und nur ausgeführt werden würde einmal, mit switch statements drin?jQuery eine Funktion

+0

Rufen Sie die Funktion auf dem Dokument bereit. Das wird es einmal ausführen. – Marc

+0

Haben Sie einen Code? '$ (SELECTOR) .on (HANDLER)' funktioniert einwandfrei .... – Rayon

+0

Das 'ready' Ereignis tritt nur einmal pro Seite auf. Wenn Duplikationen auftreten, vergewissere dich, dass das gesamte Skript nur einmal enthalten ist. Außerdem wird [jQuery $ (document) .ready() zweimal ausgelöst] (https://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice) –

Antwort

0

Standardmäßig wird die Funktion nur einmal ausgeführt werden, es sei denn, Ereignis-Listener gibt, die es mehr als einmal aufrufen.

Rayons Antwort ist nicht die beste. Setzen Sie die Funktion einmal() in die Funktion $ .ready, so dass der globale Namespace nicht verschmutzt wird. Es stellt auch eine schnellere Auflösung des Funktionsnamens aufgrund der Scope-Ketten von JavaScript sicher.

Setzen Sie es nach draußen, wenn es eine wiederverwendbare Komponente ist, so dass Sie es leicht in einer separaten Datei verschieben und aus verschiedenen Kontexten aufrufen können. Dies würde gelten, wenn Sie eine Bibliothek oder eine große Anwendung entwickeln.

$(document).ready(function() { 
 
    once(); 
 
\t function once() { 
 
    \t alert("See, this happens only once"); 
 
    }; 
 
});
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
<div> 
 
Test 
 
</div>

0

function one() { 
 
    alert("Once called"); 
 
} 
 

 
$(document).ready(function() { 
 
    one(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

erklären Sie Ihre Funktion wie gewohnt und von innen document.ready nennen.

https://learn.jquery.com/using-jquery-core/document-ready/

function one() { 
    console.log("Do one"); 
} 

$(document).ready(function() { 
    one(); 
}); 
0

var handler = function() { 
 
    alert('Called!'); 
 
}; 
 
$(document).ready(function() { 
 
    handler(); 
 
    $('#elem').one('click', handler); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="elem">Only Once!</div>

0

Wenn Sie absolut sicher sein, die Funktion nur einmal ausgeführt wird, können Sie einen Flag verwenden, falls es versehentlich wieder genannt:

var flag = false; 

function one() { 
    if (!flag) { 
     flag = true; 
     //do stuff 
    } 
} 

//.ready() 
$(function() { 
    one(); 
}); 

Wenn Die Funktion ist für eine Seite eindeutig. Sie können sie innerhalb des Aufrufs .ready() deklarieren.

0

können Sie $.Callbacks() mit Parameter verwenden "once"

function once() { 
 
    alert("once") 
 
} 
 

 
var callbacks = $.Callbacks("once"); 
 

 
callbacks.add(once); 
 

 
$().ready(callbacks.fire); // call `once` 
 

 
$().ready(callbacks.fire); // this will not call `once` 
 

 
$().ready(function() { 
 
    alert("do other stuff") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script>

Verwandte Themen