簡體   English   中英

Qtip2在fnDrawCallBack上顯示兩次

[英]Qtip2 show twice on fnDrawCallBack

JavaScript和MVC.Net 4 **

我有桌子,有分頁。 qtip通過Ajax獲取數據首次加載時,qtip會顯示一次帶有正確數據的數據。 當我更改一個值(通過Ajax轉換為BD)並重新繪制表格時,工具欄顯示兩次,在后面顯示舊的(帶有舊數據),在前面顯示新的(帶有正確數據)

"fnDrawCallback": function () {  //Al volver a dibujar (pintar) la tabla, tambien reinvoca al script de ToolTip
        $('#divTablaTurnos .tooltip-etiqueta').each(function () {
            var idturno = $(this).attr('id');
            $("#divTablaTurnos .tooltip-etiqueta #" + idturno).qtip({
                content: {
                    overwrite: true,
                    text: function (event, api) {
                        api.set('content.text', "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\"></ul>");
                        $.ajax({
                            type: 'GET',
                            url: '/Turnos/TraerListaEtiquetas',
                            dataType: "json",
                            data: { todas: todas, idturno: idturno }
                        })
                            .done(function (data) {
                                var contenido = "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\">";
                                for (i = 0; i < data.length; i++) {
                                    contenido += "<li>" + data[i].toString() + "</li>";
                                };
                                contenido += "</ul>";
                                api.set('content.text', contenido);
                            });
                        //return "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\"></ul>";
                    }
                },
                show: { effect: function () { $(this).fadeTo(500, 1); } },
                hide: { effect: function () { $(this).slideUp(); } },
                position: { target: 'mouse', adjust: { x: 5, y: 5 }, viewport: $(window) }
            });
            //$("#divTablaTurnos .tooltip-etiqueta #" + idturno).qtip('api').options.content.title.text = "asdf";    
        });
    }

並在編輯數據后顯示: 帶問題的圖像,紅色字體顯示新舊qtip

這似乎是一個非常糟糕的解決方案,但它可能會起作用。

如果您“超時” qtip,會發生什么?

也許調用棧有點與qtip雜亂無章。

我會這樣做:

setTimeout(function(){
   $("#divTablaTurnos .tooltip-etiqueta #" + idturno).qtip({
            content: {
                overwrite: true,
                text: function (event, api) {
                    api.set('content.text', "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\"></ul>");
                    $.ajax({
                        type: 'GET',
                        url: '/Turnos/TraerListaEtiquetas',
                        dataType: "json",
                        data: { todas: todas, idturno: idturno }
                    })
                        .done(function (data) {
                            var contenido = "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\">";
                            for (i = 0; i < data.length; i++) {
                                contenido += "<li>" + data[i].toString() + "</li>";
                            };
                            contenido += "</ul>";
                            api.set('content.text', contenido);
                        });
                    //return "Etiquetas: <ul class=\"tooltip-basic\" type=\"square\"></ul>";
                }
            },
            show: { effect: function () { $(this).fadeTo(500, 1); } },
            hide: { effect: function () { $(this).slideUp(); } },
            position: { target: 'mouse', adjust: { x: 5, y: 5 }, viewport: $(window) }
        });
}, 0);

然后,也許將其重新堆疊在Javascript Call Stack中。

讓我知道它是否有效!

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM