如何在jQuery插件中创建全局对象?

时间:2012-09-28 14:19:13

标签: javascript jquery jquery-plugins

如何在jQuery插件范围之外使用对象o?我有以下代码段:

  var o ={};

(function ($) {
$.fn.extend({

    gridView: function (options) {
        var defaults = {
            grid :{
                renderTo : '#container', 
            },
            gridHeader: {
            ************
            ***********

        };


        var options = $.extend(defaults, options);

        return this.each(function () {
            o = options; // i was expecting this step to fill the object 
            var obj = $(this);

            if( o.search.enabled){$(o.grid.renderTo).
         append('<div class="headerSearch">
     <input name="tbSearch" type="text" onchange="" onkeypress="do_this();" 
     id="tbSearch"><img src="'+ o.search.imgUrl +'" alt="Search"></div>')


          })(jQuery);
       console.log(o) ; // this gives me an empty object 

我的另一个问题是,如何以及在哪里创建一个可以称为onkeypress的函数 所以这个do_this();函数也可以看到对象吗?

1 个答案:

答案 0 :(得分:3)

这没有任何意义,也无法奏效。您的jQuery代码稍后会通过$("selector").gridView()调用(可能),是您的插件执行时的。在此之前,gridView: function内部没有任何内容运行,并且当您的代码到达o时,console.log(o)的值未被修改。

如果要保留与元素绑定的某些数据,则应使用$.data来获取和设置插件所绑定元素的数据属性。 jQuery Plugin Authoring页面中有关数据的部分非常有用。