有了Highmaps,为什么我的jQuery中的回调会在淡入淡出之前发生淡入淡出?
问题描述:
我有一个HighMap,带有一对用于在数据集之间切换的按钮 - 这是按预期工作的。我想添加淡入淡出,以便数据集之间的切换平滑。然而,尽管在淡入淡出的回调函数中发生,地图似乎在淡出完成之前更新了数据。有了Highmaps,为什么我的jQuery中的回调会在淡入淡出之前发生淡入淡出?
这里的代码与按钮相关的位:
var resetMap = function(dataCurrent) {
SetOptions(dataCurrent);
AccessMap.update({title: {text: dataTitle}});
AccessMap.update({colorAxis: {max: dataMax, min: dataMin, minColor: dataMinColor, maxColor: dataMaxColor,type: dataScale}});
AccessMap.update({series:[{name: dataTitle,tooltip:{ valueSuffix: dataTooltipSuffix}}]});
AccessMap.series[0].setData(dataCurrent.slice());
};
$('#setdataPop').click(function() {
$("#container").fadeOut(500,resetMap(pop));
$("#container").fadeIn(500);
});
$('#setdataRate').click(function() {
$("#container").fadeOut(500,resetMap(rate16));
$("#container").fadeIn();
});
的简化版本我的整个工作地图(包括在该片段中引用的setOptions功能)是在这里:
答
您正在执行resetMap
,未传递函数引用。您也可能想要在回调中运行fadeIn
以及:
$("#container").fadeOut(500, function() {
resetMap(pop);
$("#container").fadeIn(500);
});
完美,谢谢。我将不得不阅读更多才能完全理解其差异 - 看起来我必须在回调中定义一个函数,而不是直接调用函数。 – Moss
您不应该直接调用它,因为您不希望该功能的副作用立即发生。动画本质上是异步的,这意味着它们将来会结束。 jQuery可以让你定义动画完成后会发生什么。因此,为什么你想给你的函数引用jQuery,所以它可以在动画完成时调用它,而不是立即调用它。 –
此外,让我更容易的是从功能角度考虑功能。每当标签以'()'结尾时,就意味着您立即调用它。如果用功能结果(或其效果)代替整个位,那么您是否希望在那里发生,然后呢,还是不? –