2 Stimmen

JQuery Klassen und Funktionen erweitern Problem

Ich habe herumgesucht, aber ich kann keine klare Antwort auf meine Situation finden. Deshalb mache ich eine Iteration an einem vorhandenen jQuery-Plugin jquery.autocomplete

Also habe ich ein jQuery-Autocomplete-Plugin mit ein paar Dingen, die ich ändern muss.

Schritt 1: Muss Standardwerte erweitern (das funktioniert)

$.extend($.Autocompleter.defaults, customeDefaults);

Dies funktioniert, jetzt möchte ich die Funktionen erweitern, in denen diese Standardwerte platziert werden. Mein Problem betrifft dies:

im Autocomplete habe ich ein Setup wie das folgende

$.Autocompleter.Select = function() {
    // eine Menge Dinge in dieser Klasse, einschließlich:
    function init() {
      // das ist die Funktion, die ich erweitern muss.
    }
}

Ich habe dies versucht

$.extend($.Autocompleter.Select.init, myChanges);

Es hat nicht funktioniert Dann habe ich das gemacht

console.log($.Autocompleter.Select.init());

und es hat einen Typfehler produziert, der sagte, dass Select keine Methode init hat... was es jedoch hat. Irgendwelche Ideen?

2voto

tjarratt Punkte 1694

Derzeit ist es nicht möglich, die init-Funktion zu erweitern, da sie nicht an das $.Autocompleter.Select-Objekt gebunden ist - sie wird einfach als Funktion darin deklariert.

Stattdessen könnten Sie sie wie folgt definieren, um sie zu erweitern:

$.Autocompleter.Select = function() {
    return {
      this.init() {
        //Implementierung
      }
    }
}

Bearbeitung: Nachdem ich mir den Quelltext angesehen habe, gibt es wirklich keine Möglichkeit, die init-Funktion zu erweitern. Sie könnten wahrscheinlich die Anzeigemethode erweitern, die init() aufruft, und diese zunächst das gewünschte tun lassen, bevor die ursprüngliche Version aufgerufen wird. Die Methode ist der Antwort auf diese andere Frage sehr ähnlich

var old_display = $.Autocompleter.Select.display;
$.Autocompleter.Select.display = function(args) { 
  //was auch immer Sie zuerst tun müssen
  old_display.apply(this, args);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X