我有3个图表需要重绘。
这是我必须做的代码:
var arrOfChartContainers = ["TopLeft","TopRight","BottomLeft"];
var myAutoRefresh = setInterval(function(){
if($("#TopLeft_chartConfig").css("display")==="none"){
drawChart("TopLeft");
}else{
clearInterval(myAutoRefresh);
}
},3000);
我不想再复制2次并重新绘制另外两张图表。如果我想在内部同时进行所有三个,我怎样才能遍历我的图表?
答案 0 :(得分:2)
使用$.each
:
$.each(arrOfChartContainers, function(index, entry) {
$("#" + entry + "_chartConfig").doSomethingWithItHere();
});
E.g:
$.each(arrOfChartContainers, function(index, entry) {
var $chart = $("#" + entry + "_chartConfig");
if ($chart.css("display") === "none") {
drawChart(entry);
}
});
可能值得更改drawChart
直接接受jQuery对象,而不是间接使用该名称。
答案 1 :(得分:1)
HTML:在图表元素中添加一个类以适应下面的内容。
IS:
$('.someuniversalchartclass').each(function(){
($(this).hasClass('ninja')) ? drawChart($(this)) : clearInterval(myAutoRefresh);
});
CSS:
.ninja {
display:none;
}
答案 2 :(得分:1)
您可以使用for循环。而不是检查CSS,你可以使用.is(':visible')
for (var i = 0; i < arrOfChartContainers.length; i++) {
if ($('#' + arrOfChartContainers[i] + '_chartConfig').is(':visible')) {
drawChart(arrOfChartContainers[i]);
}
}