我正在尝试从我的插件中调用私有方法_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);
答案 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
}
});
},