jquery/jquery移动插件-小部件-调用私有方法不';行不通
我试图从我的插件中调用私有方法,但是我一直得到一个错误,它不是一个函数 谁能告诉我我做错了什么?谢谢 (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,窗口);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() {
您试图使用错误的语法访问私有方法-使用
$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(),所以我不确定它到底是做什么的。但是,由于事件函数是一个闭包,任何放在它外面的变量都应该可以通过里面的代码访问。