jQuery-Widget hat keine Methode “extend”

Lesezeit: 4 Minuten

Ich arbeite an einer WordPress-Site, die eine Reihe von jQuery- und jQuery-UI-abhängigen Plugins enthält. Alles schien gut zu funktionieren, aber als wir die gesamte Website auf den neuen Domainnamen umstellten, sah ich den folgenden Fehler in der Chrome-Konsole:

Nicht erfasster TypeError: Objektfunktion (b,c,d){var e=b.split(.””)[0],f;b=b.split(.””)[1],f=e+”-“+b,d||(d=c,c=a.Widget),a.expr[“:”][f]=Funktion(c){Rückgabe!!a.Daten(c,b)},a[e]= ein[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])} hat keine Methode ‘extend’

Hier ist die Zeile in jQuery UI 1.9.3, die dies zu verursachen scheint:

this.options = $.widget.extend( {},
this.options,
this._getCreateOptions(),
options );

Ich komme einfach nicht darüber hinweg, egal was ich versucht habe. Ich verwende die richtige Methode (oder so habe ich gelesen), um Skripte hinzuzufügen, indem ich wp_enqueue_script() verwende und jquery als Abhängigkeit von jquery-ui setze, und wenn ich mir den HTML-Code anschaue, wird jQuery tatsächlich vor der jQuery-Benutzeroberfläche geladen.

Wenn jemand eine Ahnung hat, was passieren könnte, wäre ich wirklich dankbar, das macht mich wahnsinnig.

  • Werden alle Dateien korrekt geladen?

    – escarello

    21. Dezember 2012 um 19:53 Uhr

  • In welcher Zeile von jqueryui.js passiert das?

    – Kevin B

    21. Dezember 2012 um 19:53 Uhr

  • Ich wäre hilfreich, um ein Live-Beispiel zu sehen.

    – Batfan

    21. Dezember 2012 um 19:56 Uhr

  • Ich erhalte keine anderen seltsamen Fehler oder 404-Fehler oder ähnliches (beide werden aus dem Skript-Repository von Google geladen). Es wird gemeldet, dass dieser Fehler in Zeile 568 dieser Datei auftritt: ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/…

    – Wilhelm Thomas

    21. Dezember 2012 um 19:56 Uhr

  • Ich würde das Beispiel zeigen, aber da dies die Website eines Kunden ist, glaube ich nicht, dass ich sie teilen kann, während sie in Produktion ist.

    – Wilhelm Thomas

    21. Dezember 2012 um 19:57 Uhr

Benutzeravatar von redconservatory
roter Wintergarten

Dies ist nicht die Antwort auf Ihr Problem, aber zur Veranschaulichung sieht es manchmal so aus, als hätten Sie einen jQuery-Fehler, wenn Sie tatsächlich einen Fehler mit Ihrem benutzerdefinierten Javascript haben.

Wenn Sie Chrome verwenden, können Sie die Konsole öffnen (Extras > Javascript-Konsole) und den kleinen Pfeil bei Ihrem Fehler öffnen. Dies zeigt Ihnen alle Codezeilen, die den Fehler verursacht haben.

Siehe Bild:

Verwenden Sie die Konsole, um den Zeilenfehler zu finden

Wenn Sie in der Liste nach unten schauen, führt dies häufig zu einem anderen Javascript als jQuery. Wenn Sie auf die schwarzen Links auf der rechten Seite klicken (dh activity.php), werden die anstößigen Zeilen geöffnet, wenn es sich um Javascript handelt.

Ein weiteres Problem (wenn Sie WordPress verwenden) ist, dass Sie jQuery möglicherweise zweimal laden. Es hört sich so an, als hätten Sie es richtig gemacht, aber es ist möglich, dass eines Ihrer Plugins dies nicht getan hat.

Bearbeiten
Welche Version von jQuery verwenden Sie (Entschuldigung, jquery ui falsch gelesen)

Aus der Dokumentation: Ninja Forms verwendet die Version von jQuery (die Javascript-Bibliothek), die mit WordPress geliefert wird. Das bedeutet, wenn Sie eine externe jQuery-Datei verwenden oder ein anderes Plugin seine eigene Version von jQuery lädt, können Fehler auftreten. Wenn Sie beispielsweise WordPress Version 3.3 oder höher verwenden, erwartet Ninja Forms, dass Ihre Website Version 1.7 von jQuery hat. Wenn Sie ein Design oder Plugin haben, das dies zu einer früheren Version von jQuery ändert, funktioniert Ninja Forms möglicherweise nicht richtig.

  • Ich weiß, das hilft nicht allzu viel, aber hier ist der Stack-Trace des Fehlers: i.imgur.com/ohYGJ.png Offensichtlich scheint die Ninja-Formularbibliothek der Schuldige zu sein, aber die Zeile, die den Fehler verursacht, sieht nicht falsch aus oder so (und sie wurde nicht geändert, seit die Dateien verschoben wurden).

    – Wilhelm Thomas

    21. Dezember 2012 um 20:04 Uhr


  • Dies ist die Zeile in Ninja-Forms-Display: $(“#ninja_form_overlay”).dialog({height: 200,autoOpen: false,modal: true});

    – Wilhelm Thomas

    21. Dezember 2012 um 20:05 Uhr

  • Ja, das hat es getan. Ich habe neue Versionen dieser Bibliotheken manuell geladen und aus irgendeinem Grund funktionierten Ninja-Formulare vorher gut, aber ich denke, das Plugin wurde aktualisiert und das muss schief gelaufen sein. Ich habe diese manuellen Ladeanweisungen entfernt, die es zwangen, die enthaltenen Bibliotheken zu verwenden, und alles wurde wieder normal. Vielen Dank!

    – Wilhelm Thomas

    21. Dezember 2012 um 20:19 Uhr

1386840cookie-checkjQuery-Widget hat keine Methode “extend”

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy