Ich schreibe ein jQuery-Plugin, das in einigen Fällen einige Daten speichert.Schreiben Sie ein jQuery-Plugin, das Werte zurückgibt
Ich möchte es sehr flexibel schreiben, wo ich einen Eingabeparameter ändern kann, um einen Wert zu erhalten, der vom Plugin gespeichert wurde.
Erläuterung:
Wenn ich rufe $("#any").myPlugin()
, mein Plugin initialisiert eine div
und einige a
innen zu schaffen. Klicken Sie auf ein a
wird es .index()
mit der .data()
Methode speichern. Wenn ich rufe $("#any").myPlugin("getSelection")
dann möchte ich den Wert mit .data()
gespeichert bekommen.
Was ich versucht hatte:
(function ($) {
$.fn.myPlugin = function (action) {
if (action == null) action = "initialize";
return this.each(function ($this) {
$this = $(this);
if (action == "initialize") {
$this.html('<div></div>');
var div = $("div", $this);
div.append('<a>A</a>').append('<a>B</a>').append('<a>C</a>');
div.children("a").each(function (i) {
$(this).click(function (event) {
// Here I store the index.
$this.data($(this).index());
event.preventDefault();
return false;
});
});
return $this;
} else if (action == "getSelection") {
// With this action, I tried to get the stored value.
return $this.data("selectedValue");
}
});
};
})(jQuery);
einfachen Aufruf der Elemente zu erstellen:
$("#someElement").myPlugin();
Und hier habe ich versucht hatte, den Index zu bekommen, ohne Erfolg:
alert($("#someElement").myPlugin("getSelection"));
Also, ist es möglich zu tun, was ich versuche?
Danke, indem Sie auf das undefined zeigen, aber es könnte nur die Initialisierung beeinflussen. Die Rückgabe, wenn die richtige Aktion eingestellt ist, ist nicht gelöst. –
Aber wenn die Initialisierung nicht funktioniert, werden Sie niemals die neuen Elemente erhalten, niemals die Click-Ereignisse anhängen und niemals die Daten setzen. Daher erhalten Sie die Auswahl später nie beim Aufruf mit dem Parameter getSelection. – Jamiec