0

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

  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();函数也可以看到该对象?

4

1 回答 1

3

这没有任何意义,也行不通。您的 jQuery 代码在稍后的某个时间通过 a 调用(大概),$("selector").gridView()您的插件执行的时候。在那之前,您的内部没有任何东西gridView: function运行,并且o当您的代码达到console.log(o).

如果你想保留一些与元素相关的数据,你应该使用$.data来获取和设置你的插件绑定到的元素上的数据属性。jQuery 插件创作页面中的数据部分将非常有用。

于 2012-09-28T14:27:29.387 回答