Ich versuche, ein jQuery-Plugin zu erstellen, das etwas wie eine AutoCompleteBox, aber mit benutzerdefinierten Features erstellen wird. Wie speichere ich Mitgliedsvariablen für jedes passende jQuery-Element?Wie haben Sie Member-Variablen und öffentliche Methoden in einem jQuery-Plugin?
Zum Beispiel muss ich eine TimerID für jedes speichern. Ich möchte auch Referenzen auf einige der DOM-Elemente speichern, die das Steuerelement ausmachen.
Ich möchte in der Lage sein, eine öffentliche Methode zu machen, dass so etwas funktioniert:
$("#myCtrl").autoCompleteEx.addItem("1");
Aber bei der Umsetzung der addItem(), wie kann ich die Elementvariablen für das jeweilige Objekt wie seine timerId zugreifen oder Wasauchimmer?
Unten ist das, was ich bisher ...
Vielen Dank für jede Hilfe oder Anregungen!
(function($)
{
//Attach this new method to jQuery
$.fn.autoCompleteEx = function(options)
{
//Merge Given Options W/ Defaults, But Don't Alter Either
var opts = $.extend({}, $.fn.autoCompleteEx.defaults, options);
//Iterate over the current set of matched elements
return this.each(function()
{
var acx = $(this); //Get JQuery Version Of Element (Should Be Div)
//Give Div Correct Class & Add <ul> w/ input item to it
acx.addClass("autoCompleteEx");
acx.html("<ul><li class=\"input\"><input type=\"text\"/></li></ul>");
//Grab Input As JQ Object
var input = $("input", acx);
//Wireup Div
acx.click(function()
{
input.focus().val(input.val());
});
//Wireup Input
input.keydown(function(e)
{
var kc = e.keyCode;
if(kc == 13) //Enter
{
}
else if(kc == 27) //Esc
{
}
else
{
//Resize TextArea To Input
var width = 50 + (_txtArea.val().length*10);
_txtArea.css("width", width+"px");
}
});
}); //End Each JQ Element
}; //End autoCompleteEx()
//Private Functions
function junk()
{
};
//Public Functions
$.fn.autoCompleteEx.addItem = function(id,txt)
{
var x = this;
var y = 0;
};
//Default Settings
$.fn.autoCompleteEx.defaults =
{
minChars: 2,
delay: 300,
maxItems: 1
};
//End Of Closure
})(jQuery);
Sie sind ein Genie ... Tausend Dank dafür! – Legend