我正在尝试将所有data-role=header
页面附加到左侧的图标菜单,但它在右侧是重复的,有人可以给我一个解释吗? html()
有效,但标题没有使用图标调整大小。
var header = '<a href="#left-panel" id="panel-left" data-icon="carat-r" data-iconpos="notext" data-shadow="false" data-iconshadow="false" class="ui-btn ui-shadow ui-corner-all ui-icon-bullets ui-btn-icon-notext ui-btn-inline"></a>';
更新的代码:标题中的按钮丢失。
$(document).one('pagebeforecreate', function () {
$.mobile.pageContainer.prepend(panel);
$("[data-role=panel]").enhanceWithin();
$("#left-panel").panel();
/* search for button and header in active page only*/
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
if( $("#panel-left", activePage).length === 0 ) {
$("[data-role=header]", activePage).append(header);
}
});
答案 0 :(得分:1)
由于您正在使用单页模型和数据预取外部链接,getActivePage
将返回DOM中的第一页。因此, activePage 应该是正在创建的页面。将以下代码置于您正在使用的代码之外,以动态附加外部面板。
$(document).on('pagebeforecreate', function (e) {
var activePage = $(e.target);
if ($("#panel-left", activePage).length === 0) {
$("[data-role=header]", activePage).append(header);
}
});
您需要首先检查按钮是否已经附加,因为pagebeforecreate
会在每个正在创建的页面上触发。
在pagecreate
上,检查当前页面是否在标题中没有按钮并附加它。
var header = '<a href="#left-panel" id="panel-left" data-icon="carat-r" data-iconpos="notext" data-shadow="false" data-iconshadow="false" class="ui-btn ui-shadow ui-corner-all ui-icon-bullets ui-btn-icon-notext ui-btn-inline"></a>';
$(document).one('pagebeforecreate', function () {
/* append External panel once */
$.mobile.pageContainer.prepend(panel);
$("#left-panel").panel();
/* append button on pagecreate */
$(document).on('pagecreate', function () {
var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
if ($("#panel-left", activePage).length === 0) {
$("[data-role=header]", activePage).append(header);
}
});
});
<强> Demo 强>
答案 1 :(得分:0)
我认为您的代码在每个header
事件上向每个[data-role=header]
添加pagebeforecreate
,因此可能是重复代码。试试这个:
$(document).one('pagebeforecreate', function () {
$(this).find("[data-role=header]").append(header);
});