在这一个人的墙上敲我的头。我在标准jQuery选项卡和手风琴方面看到了类似的问题,但对移动设备却没有。在jQuery Mobile中,我在导航栏中实现了三个选项卡,如下所示
<div data-role="page" id="GraphPage">
<div data-role="tabs" id="tabs">
<div data-role="navbar">
<ul>
<li><a href="#tab1" data-ajax="false" class="ui-btn-active">Tab 1</a></li>
<li><a href="#tab2" data-ajax="false">Tab 2</a></li>
<li><a href="#tab3" data-ajax="false">Tab 3</a></li>
</ul>
</div>
<div id="tab1" style="width: 100%;"></div>
<div id="tab2" style="width: 100%;"></div>
<div id="tab3" style="width: 100%;"></div>
</div>
</div>
我想要做的是为每个标签设置一个jqPlot图表。在标签之外,所有三个图形都完美呈现。使用选项卡式div ID时,只有第一个选项卡会显示图表。其他两个选项卡是空白的。这是我的javascript。任何帮助将不胜感激!这里是jsFiddle - http://jsfiddle.net/tightsoundmusic/nLvqk4sp/
<script type="text/javascript">
$("#GraphPage").on("pageshow",function(){
var line1=[['2014-9-1 12:00AM',2], ['2014-9-2 12:00AM',4], ['2014-9-3 12:00AM',3], ['2014-9-4 12:00AM',2], ['2014-9-5 12:00AM',3]];
var line2=[['2014-9-1 12:00AM',3], ['2014-9-2 12:00AM',2], ['2014-9-3 12:00AM',0], ['2014-9-4 12:00AM',3], ['2014-9-5 12:00AM',2]];
var line3=[['2014-9-1 12:00AM',2], ['2014-9-2 12:00AM',4], ['2014-9-3 12:00AM',3], ['2014-9-4 12:00AM',2], ['2014-9-5 12:00AM',3]];
var line4=[['2014-9-1 12:00AM',3], ['2014-9-2 12:00AM',2], ['2014-9-3 12:00AM',0], ['2014-9-4 12:00AM',3], ['2014-9-5 12:00AM',2]];
var line5=[['2014-9-1 12:00AM',2], ['2014-9-2 12:00AM',4], ['2014-9-3 12:00AM',3], ['2014-9-4 12:00AM',2], ['2014-9-5 12:00AM',3]];
var line6=[['2014-9-1 12:00AM',3], ['2014-9-2 12:00AM',2], ['2014-9-3 12:00AM',0], ['2014-9-4 12:00AM',3], ['2014-9-5 12:00AM',2]];
var plot1 = $.jqplot('tab1', [line1,line2], {
animate: true,
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
tickOptions:{formatString:'%#m/%#d'}
},
yaxis:{
showTicks: false,
}
},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
var plot2 = $.jqplot('tab2', [line3,line4], {
animate: true,
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
tickOptions:{formatString:'%#m/%#d'}
},
yaxis:{
showTicks: false,
}
},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
var plot3 = $.jqplot('tab3', [line5,line6], {
animate: true,
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
tickOptions:{formatString:'%#m/%#d'}
},
yaxis:{
showTicks: false,
}
},
series:[{lineWidth:4, markerOptions:{style:'square'}}]
});
});
</script>
答案 0 :(得分:0)
创建标签小部件时,只有第一个标签可见,其余标签隐藏。因此,当尺寸未知时,无法访问它们。
因此,您唯一的选择是在通过收听tabsactivate
事件激活标签时运行jqPlot。当tabsactivate
触发时,它会返回激活标签$(this).tabs("option", "active")
的索引。此时,根据检索到的索引运行jqPlot。
$(document).on("pagecreate", function () {
$("#tabs").tabs({
activate: function (e) {
var activeTab = $(this).tabs("option", "active");
if (activeTab == 0) {
plot1();
}
if (activeTab == 1) {
plot2();
}
if (activeTab == 2) {
plot3();
}
}
});
}).one("pagecontainershow", plot1); /* run it once on first tab */
<强> Demo 强>