如何在show callback(qtip2)中等待ajax函数完成?

时间:2012-07-11 09:53:53

标签: javascript jquery ajax qtip2

我正在使用qtip2进行收费:

function setupTolltip() {
    $("g path").each(function () {
        var path = $(this);
        var sessionId = $("#rsr").attr("data-session");
        var clientId = $("#rsr").attr("data-client");
        $(this).qtip(
            {
                content: {
                    text: function () {
                        var allPlaces = $(this).attr("data-all");
                        var freePlaces = $(this).attr("data-free");
                        var price = $(this).attr("data-price");
                        var tooltipText = "<div>All: " + allPlaces + "<br/>Free: " + freePlaces + "<br/> Price: " + price + "</div>";
                        return tooltipText;
                    }
                },
                events: {
                    show: function () {
                        var levelId = path.attr("level");
                        updateLevelInfo(path, levelId, sessionId, clientId);

                    }
                },
                position: {
                    target: 'mouse',
                    adjust: {
                        x: 10
                    }
                },
                style: {
                    classes: 'ui-tooltip-tipsy ui-tooltip-shadow',
                    tip: true
                }
            });
    });
}

当工具提示显示我打电话updateLevelInfo时。此函数生成使用qtip的ajax请求和更新属性。问题在于这是ajax请求(我不能使用$.get)和工具提示在执行完函数之前显示。

1 个答案:

答案 0 :(得分:1)

为什么不使用AJAX Object中使用的this official demo

您应始终显示“加载”信息或图片,因此如果在加载内容之前显示工具提示,则没有任何问题。 (再次参见Ajax Demo

如果您想使用show功能,请使用show: function(event, api)(请参阅this example)。然后使用var api并将其放入函数中:

updateLevelInfo(path, levelId, sessionId, clientId, api);

然后,您可以在完成功能后为员工操作工具提示!