jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在jQuery插件中拥有成员变量和公共方法?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个jQuery插件,它将创建类似autoCompleteBox但具有自定义功能的东西.如何为每个匹配的jQuery元素存储成员变量?

例如,我需要为每个存储一个timerID.我还想存储对构成控件的一些DOM元素的引用.

我希望能够创建一个类似于以下内容的公共方法

$("#myCtrl").autoCompleteEx.addItem("1");

但是在addItem()的实现中,如何访问该特定对象的成员变量,如timerID或其他什么?

以下是我到目前为止的情况……

感谢您的任何帮助或建议!

(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);

解决方法

我发现jQuery UI处理这个问题的方法看起来效果最好.您将“额外方法”创建为插件的字符串参数:

$('#elem').autoCompleteEx('addItem','1');

然后保留’this’上下文,你可以沿着这些方向做一些事情:

function addItem() {
  // this should be == jquery object when this get called
}

$.fn.autoCompleteEx = function(options) {
   if (options === 'addItem') {
     return addItem.apply(this,Array.prototype.splice.call(arguments,1));
   }
};

大佬总结

以上是大佬教程为你收集整理的如何在jQuery插件中拥有成员变量和公共方法?全部内容,希望文章能够帮你解决如何在jQuery插件中拥有成员变量和公共方法?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。