根据文档(
http://jquerymobile.com/demos/1.2.0/docs/api/events.html),应该在执行jQuery移动页面的所有小部件和插件之后调用pageinit事件.所以,我相信我应该能够在事件回调中与该页面上的元素进行交互而不受惩罚.但是,我监听页面初始化,然后尝试与页面上的按钮进行交互,我收到以下错误:
cannot call methods on button prior to initialization; attempted to
call method ‘disabled’
我已经把一个codepen放在一起,向你展示:
http://codepen.io/mattsnider/pen/mvcbD
是什么赋予了? pageinit是否无法正常工作或这是一个错误?
解决方法
您的pageinit事件没有任何问题.错误在于< a>标签.
>它没有禁用,禁用它
>在调用disable方法之前,必须调用button()方法.因此,您将初始化按钮元素.
这就是代码现在的样子:
$('#ageNext').button().button('disable');
但是,如果你这样做,你会得到这样的错误:
Uncaught TypeError: Cannot call method ‘addClass’ of undefined
disable: function() { this.element.attr( "disabled",true ); this.button.addClass( "ui-disabled" ).attr( "aria-disabled",true ); //^^ Uncaught TypeError: Cannot call method 'addClass' of undefined return this._setOption( "disabled",true ); }
你看到了那个按钮吗?如果元素不是真正的按钮,这将变为未定义.
所以说,我已经禁用只能在输入[type = button]和< button />上工作.元素的类型.出于某种原因,这在< a />上无法正常工作.冒充按钮.我通过手动将ui-disabled类添加到元素中来实现此功能,如下所示:
$(document).on('pageinit','#age',function (e) { $('#ageNext').addClass('ui-disabled'); });