it-swarm.com.de

jquery einmal onload

Aufgrund eines externen Moduls durch Klicken auf Formular senden wird die Site 5 Mal aufgerufen. Ich weiß nicht, wie man es einmal richtig benutzt!

(function ($) {
  Drupal.behaviors.myFunction = {
    attach: function (context, settings) {

  ... loading dom Elements  as document.ready()...

dann ruft der knifflige Teil meine Funktion nur 1 mal auf, nicht 5 mal! ??

     my_new_function(variable);
     ...
     function my_new_function(variable){
     ...
     }
     ...
    }
  };

})(jQuery);
3
maen

Sie können $ .once () verwenden, das sowohl in Drupal 7 als auch in Drupal 8. Der in $ .once () aufgerufene Code ist nur verfügbar einmalig für das aufgerufene HTML-Element ausgeführt.

Für D7 können Sie Folgendes tun:

(function ($, Drupal) {

  function someElementWatcher(context) {
    // $.once acts like $.each, and loops through the found elements.
    // The code inside $.once() will act on each element in the jQuery object
    // a single time.
    $(context).find(".some_element").once("some-arbitrary-but-unique-key", function () {
      // $(this) refers to the current instance of $(".some_element")
      $(this).click(function () {
        // Do something clicky.
      });
    });
  }

  Drupal.behaviors.someUniqueKey = {
    attach:function (context) {
      someElementWatcher();
    }
  };
}(jQuery, Drupal));

In Drupal 8) hat sich die Funktionalität von $ .once () unter der Haube geändert, und die Methode zum Festlegen am Frontend hat sich geändert. In D8 muss $ .once () geändert werden mit $ .each () kombiniert werden. Also dies:

$(context).find(".some_element").once("some-arbitrary-but-unique-key", function () {});

Wird dies in D8:

$(context).find(".some_element").once("some-arbitrary-but-unique-key").each(function () {});
15
Jaypan

Drupal bietet das jquery-Plugin once(), mit dem Sie sicherstellen können, dass eine Funktion nur einmal für ein einzelnes Element ausgeführt wird. Sie können dies in Ihrem Verhalten verwenden.

Siehe Drupal.behaviours hier: https://www.drupal.org/docs/8/api/javascript-api/javascript- API-Übersicht

2
autopoietic