2011-09-14 10 views
1

私のプラグインからプライベートメソッド_scrollMeを呼び出そうとしていますが、それは関数ではないというエラーが発生し続けます。jquery/jquery mobile plugin - widget - プライベートメソッドの呼び出しが機能しません

誰かが私が間違っていることを教えてもらえますか?ありがとう!

 
    (function($, window, undefined){ 
     $.widget("mobile.multiview", $.mobile.widget, {   
     _create: function() { 
      this._morph(); 
      }, 
     _morph: function() { 
      $('div[data-role="page"]').live('pagebeforeshow.scroll', function(event){ 
       var $page = $(this); 
       if ($page.data('scrollable', 'Off')) { 
        $page._scrollMe(); // this doesn't fire 
        } 
      }); 
      }, 
     _scrollMe: function() { 
      alert ("scrollMe"); 
      } 
    }); 

// initialize 
$(document).bind("pagecreate", function() { 
     $(document).multiview(); 
     }); 

})(jQuery,window); 

答えて

0

あなたは間違った構文を使用して、プライベートメソッドにアクセスしようとしている - $page.methodを使用すると、パブリックメソッドとしてそれを呼び出そうとしています。

this._scrollMeに変更すると効果があります。

+0

は動作しません。私はウィンドウ(= "this")でプラグインを呼び出していて、次に私はpageBeforeShowをリッスンして "this"を再使用しているからでしょうか? – frequent

0

「この」は、イベントコールバックにあるとは思わないと思います。

関数の外に$ page変数を移動してみてください。

var $page = $(this); 
$('div[data-role="page"]').live('pagebeforeshow.scroll', function(event){ 

、多分この代わりに:

var $page = this; 

//編集//

_morph: function() { 
    var page = this; 
    $('div[data-role="page"]').live('pagebeforeshow.scroll', function(event) { 
     if($page.data('scrollable', 'Off')) { 
      $page._scrollMe(); // this doesn't fire 
     } 
    }); 
}, 
+0

プラグインの初期化後またはプラグインの外に置くことを意味しますか? – frequent

+0

"var $ page = this"をlive()関数の外側に置いてみてくださいが、それでも_morphの中に入れてください。 – brain

+0

もそれをしません::-(私はまだそれはプラグインがこの "ウィンドウ"を使用し、これを聞いていると思う=ページ何を考えますか? – frequent