Ich habe ein Verhalten, on
das einige Kontrollkästchen ergänzt.
(function($) {
Drupal.behaviors.mymodule = {
attach: function (context, settings) {
$('.skip-line', context).on('change', function(){
// some code
if ( confirm(Drupal.t('Apply to all languages?')) ) {
// applying...
}
});
}
};
})(jQuery);
Es funktioniert sehr gut, aber Kontrollkästchen befinden sich im AJAX-geladenen Teil. Wenn ich diesen Teil des Formulars neu lade, wird durch zweimaliges Klicken ein Bestätigungs-Popup angezeigt. Jetzt weiß ich, dass ich die Innenfunktion testen kann, wenn sie zum ersten Mal in Folge aufgerufen wird, aber ich möchte lieber sicherstellen, dass sie nur einmal zu meinem Element hinzugefügt und daher nur einmal aufgerufen wird. Wie kann ich das machen?
javascript
Mołot
quelle
quelle
Sie müssen die Funktion Once () verwenden, um dies zu erreichen. Von dieser Seite
Die an die Funktion übergebene Zeichenfolge "myModule" wird als Markierung für die Elemente festgelegt, die mit der jQuery-Auswahl übereinstimmen, sodass sie beim nächsten Aufruf ignoriert werden. Verwenden Sie nicht dieselbe Zeichenfolge, wenn Sie die Funktion Once einmal für verschiedene Zwecke aufrufen. Andernfalls können Sie ihren Zweck umgehen.
quelle
Sie können dies auch tun:
quelle
Hier ist eine andere Möglichkeit, eine Funktion zu haben, die einmal ausgeführt wird:
Quelle: https://www.drupal.org/forum/support/module-development-and-code-questions/2018-06-15/run-js-funtion-once-not-attach-once#comment-12654121
quelle
Hier ist ein Beispiel, das die Antwort von frazras erweitert:
quelle