jquery / jquery移动插件 - 小部件 - 调用私有方法不起作用

时间:2011-09-14 18:08:38

标签: jquery jquery-plugins methods jquery-mobile widget

我正在尝试从我的插件中调用私有方法_scrollMe,但我一直收到一个错误,它不是一个函数。

有人可以告诉我我做错了什么吗?谢谢!

    (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);

2 个答案:

答案 0 :(得分:0)

您尝试使用错误的语法访问私有方法 - 使用$page.method尝试将其称为公共方法。

将其更改为this._scrollMe应该有效。

答案 1 :(得分: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 
        }
     });
},