2017-07-05 1 views
0

Dies ist das erste Mal Plugin erstellen. Aber mein Plugin hat ein kleines Problem. Ich habe untenErstellen von Jquery-Plugin mit Ajax

$.fn.myPlugin = function(url){ 
    return this.each(function() { 
     element = $(this); 
     $.getJSON(url, function(response){ 
      elem.val(response.init_value); 
     }); 
    }); 
} 

eine einfache Nachbildung meines Plugin erstellt und wie diese

$("#test1").myPlugin('/get1.json'); //this should value 1 
$("#test2").myPlugin('/get2.json'); //this should value 2 

Initiiert aber das Ergebnis nicht funktioniert als

Element #test1 has done nothing, no value (I think it is broken) 
Element #test2 has value of 2 
erwartet

Mein Plugin funktioniert gut, wenn ich initiiere eine einzelne Instanz, aber wenn ich versuche, mehrere Instanzen zu erstellen, funktioniert nur die letzte Instanz.

Antwort

1

Ich denke, dies passiert, weil Sie element ohne var deklariert haben.

Auf diese Weise haben Sie element als globale Variable deklariert, so element = $(this); ist im Grunde das gleiche wie window.element = $(this);. Aus diesem Grund überschreibt der zweite Funktionsaufruf die erste Instanz von element.

Das sollte eine einfache Lösung sein: var element = $(this);

+0

OMG. Das war's? Vielen Dank vi5ion! Du sparst meinen Tag. –

Verwandte Themen