另一个使用小技巧但没有任何类属性操作的解决方案是声明一个新的小部件扩展collapsible-set
并取消绑定不需要的事件处理程序。
$.widget( "mobile.collapsiblegroup", $.mobile.collapsibleset, {
options: {
initSelector: ":jqmData(role='collapsible-group')"
},
_create: function() {
$.mobile.collapsibleset.prototype._create.call(this);
var $el = this.element;
if (!$el.jqmData('collapsiblebound2')) {
$el.jqmData('collapsiblebound2', true)
.unbind('expand')
.bind('expand', $._data($el.get(0), 'events')['collapse'][0]);
}
}
});
//auto self-init widgets
$( document ).bind( "pagecreate create", function( e ) {
$.mobile.collapsiblegroup.prototype.enhanceWithin( e.target );
});
要使用它,只需将data-role
改为collapsible-group
代替collapsible-set
。
注意:这仅适用于 jQuery 1.8+,旧版本更改
$._data($el.get(0), 'events')
至$el.data('events')