Ankündigung

Einklappen
Keine Ankündigung bisher.

jquery .on() is not a function

Einklappen

Neue Werbung 2019

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

  • jquery .on() is not a function

    Abend,

    ich stehe gerade ein bisschen auf dem Schlauch mein Code schmeißt mir den Fehler folgenden Fehler:
    Code:
    TypeError: $(...).on(...) is not a function[Weitere Informationen]
    Code:
    jQuery.Deferred exception: $(...).on(...) is not a function @http://localhost/js/customJqueryFunctions24.js:7:5
    j@http://localhost/vendor/jquery/dist/jquery.min.js:2:29997
    g/</k<@http://localhost/vendor/jquery/dist/jquery.min.js:2:30313
     undefined
    Code:
    $(document).ready(function() {
    //
    //  AJAX for categories
    //
    
        // create new category
    $("#categoryLevel10Form2").on('change ready')(function () {
            var category_id = $("#categoryLevel10Form2 option:selected")[0].value;
            ajaxRequestAndRenderOptions('/exerciseCategory/returnLowerCategories/', category_id, $("#categoryLevel20Form2"))
        });
    
        function ajaxRequestAndRenderOptions(url, category_id, nextInput) {
            $.get(url+category_id, function (data) {
                // remove all current child nodes
                nextInput.empty();
                // parse response and add new childs
                var obj = JSON.parse(data);
                obj.forEach(function (value, index) {
                    var option = document.createElement('option');
                    option.value = value.id;
                    option.textContent = value.name;
                    nextInput.append(option);
                });
            });
        }
    //...
    }
    Die rote Zeile ersetzt durch:
    Code:
    $("#categoryLevel10Form2").change(function () {
    hat noch einwandfrei funktioniert.

    Hab den Fehler natürlich gegoogelt und dabei 2 mögliche Ursachen gefunden
    - Version zu alt (älter als 1.7) -> ich binde v3.2.1 ein
    - Namenskonflikte mit anderen Bibliotheken -> bei mir wird nur jquery eingebunden.

    Kann mir einen Anstupser geben was ich falsch mache?
    Ansich möchte ich nur, dass beim Auslösen des change Events was passiert und außerdem einmal wenn die Seite geladen wird.

    Beste Grüße



  • #2
    Bei der .change() Version hat es zwar funktioniert, sagst Du, aber kannst Du wirklich Tippfehler in der Query ausschliessen, nachdem Du auf .on() gestellt hast?
    Wenn $("#categoryLevel10Form2") kein DOMElement zurück gibt, kommt dieser Fehler imho auch.

    Nur ne Idee...
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Zitat von Arne Drews Beitrag anzeigen
      Bei der .change() Version hat es zwar funktioniert, sagst Du, aber kannst Du wirklich Tippfehler in der Query ausschliessen, nachdem Du auf .on() gestellt hast?
      Wenn $("#categoryLevel10Form2") kein DOMElement zurück gibt, kommt dieser Fehler imho auch.

      Nur ne Idee...
      Da lag der Fehler zwar nicht, aber "Tippfehler" war der richtige Stichpunkt.
      Code:
       $("#categoryLevel10Form2").on('change ready')(function () {  
      // muss dazu werden:  
      $("#categoryLevel10Form2").on('change ready', function () {
      Dadurch das sich da 2 falsche Klammern eingeschlichen hatten ist mir das vorher nicht aufgefallen.

      Kommentar


      • #4
        Ja, genau das meinte ich doch...

        Nein, das ist mir auch gar nicht aufgefallen, muss ich zugeben. Ist aber logisch...
        Wobei ich eher eine Meldung über fehlerhafte Parameter der Funktion erwartet hätte, aber gut...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Zitat von Arne Drews Beitrag anzeigen
          Wobei ich eher eine Meldung über fehlerhafte Parameter der Funktion erwartet hätte, aber gut...
          Fehlende Parameter sind kein Syntaxfehler ... Der Fehler an sich ist schon korrekt so, da der Rückgabewert von on() als Funktion betrachtet wurde.

          Kommentar


          • #6
            Glaube ich Dir... Mir persönlich kommt es nur falsch vor. Die Funktion on() ist in dem Moment ja trotzdem nicht unbekannt, sie wurde nur falsch aufgerufen. Daher passt die Meldung aus meiner Sicht nicht so.
            Aber spielt auch keine Rolle, die Meldung ist nun mal so, da muss ich auch mental mit klar kommen...
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Zitat von Arne Drews Beitrag anzeigen
              Die Funktion on() ist in dem Moment ja trotzdem nicht unbekannt, sie wurde nur falsch aufgerufen.
              Der Fehler dreht sich ja auch nicht um on(), sondern um on()().

              Kommentar


              • #8
                Lese ich eben nicht so:
                jQuery.Deferred exception: $(...).on(...) is not a function @http://localhost/js/customJqueryFunctions24.js:7:5
                Da steht nichts von on()()! er sagt $(...).on() is not a function!
                Wenn es so stehen würde, wie Du es sagst, macht das schon mehr Sinn für mich. Aber was solls, die Meldung ist so und wird sich nicht ändern, egal, wie lang wir das hier auseinander ziehen.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Um mal zu verdeutlichen, was ich meine:
                  Code:
                  $('body').foo()
                  TypeError: $(...).foo is not a function
                  Code:
                  $('body').on()()
                  TypeError: $(...).on(...) is not a function
                  Man beachte, welche Meldung welche Klammern anzeigt.

                  Kommentar


                  • #10
                    WTF... Ok, so wird'n Schuh draus...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zugegeben, an Funktionen als first-class citizens muss man sich auch erst gewöhnen.

                      Kommentar

                      Lädt...
                      X