0

ojQueryプラグインスコープ外のオブジェクトを使用するにはどうすればよいですか?私は次のスニペットを持っています:

  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の値は変更されていません。oconsole.log(o)

要素に関連付けられているデータを永続化する場合は$.data、プラグインがバインドされている要素のデータ属性を取得および設定するために使用する必要があります。jQueryプラグインオーサリングページのデータに関するセクションは非常に役立ちます。

于 2012-09-28T14:27:29.387 に答える