Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery/jquery移动插件-小部件-调用私有方法不';行不通_Jquery_Jquery Plugins_Methods_Jquery Mobile_Widget - Fatal编程技术网

jquery/jquery移动插件-小部件-调用私有方法不';行不通

jquery/jquery移动插件-小部件-调用私有方法不';行不通,jquery,jquery-plugins,methods,jquery-mobile,widget,Jquery,Jquery Plugins,Methods,Jquery Mobile,Widget,我试图从我的插件中调用私有方法,但是我一直得到一个错误,它不是一个函数 谁能告诉我我做错了什么?谢谢 (function( $, window, undefined ){ $.widget( "mobile.multiview", $.mobile.widget, { _create: function() { this._morph(); }, _morph: function() {

我试图从我的插件中调用私有方法,但是我一直得到一个错误,它不是一个函数

谁能告诉我我做错了什么?谢谢

(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); (函数($,窗口,未定义){ $.widget(“mobile.multiview”,$.mobile.widget,{ _创建:函数(){ 这个; }, _变形:函数(){ $('div[data role=“page”]).live('pagebeforeshow.scroll',函数(事件){ var$page=$(此); 如果($page.data('scrollable','Off')){ $page._scrollMe();//这不会触发 } }); }, _scrollMe:function(){ 警惕(“滚动我”); } }); //初始化 $(文档).bind(“pagecreate”,函数(){ $(文档).multiview(); }); })(jQuery,窗口);
您试图使用错误的语法访问私有方法-使用
$page.method
试图将其作为公共方法调用


将其更改为
this.\u scrollMe
应该可以工作。

我不认为“this”是您在该事件回调中所期望的

尝试将$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 
        }
     });
},

不起作用。这可能是因为我在窗口(“this”)上调用插件,然后我正在监听pageBeforeShow并重新使用“this”?你的意思是将它放在//初始化之后还是放在插件之外?尝试将“var$page=this”放在live()函数之外,但仍然放在_morphone内。也不能这样做…:-(我仍然认为这是因为插件使用this=“window”并实时侦听this=页面。你认为如何?老实说,我没有使用$.widget(),所以我不确定它到底是做什么的。但是,由于事件函数是一个闭包,任何放在它外面的变量都应该可以通过里面的代码访问。