如何在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();
函数也可以看到对象吗?
答案 0 :(得分:3)
这没有任何意义,也无法奏效。您的jQuery代码稍后会通过$("selector").gridView()
和调用(可能),是您的插件执行时的。在此之前,gridView: function
内部没有任何内容运行,并且当您的代码到达o
时,console.log(o)
的值未被修改。
如果要保留与元素绑定的某些数据,则应使用$.data
来获取和设置插件所绑定元素的数据属性。 jQuery Plugin Authoring页面中有关数据的部分非常有用。