Mostrar información sobre herramientas solo cuando se haya creado por completo

Creé una buena información sobre herramientas para mi sitio web, pero tengo un problema cuando voy demasiado rápido con el mouse y antes de que los datos se almacenen en caché.

Esta es la situación: creo dinámicamente información sobre herramientas a partir de una base de datos. Tengo 2 llamadas ajax para hacerlo, creo mucho dom para tener exactamente lo que quiero, etc. Las funciones se llaman a sí mismas una por una, pero el resultado se muestra antes de que se cree completamente la información sobre herramientas.

Para activar la pantalla, uso un solo:

$('a').live('mouseenter',function(){
     BuildTooltip(this);
     $('#tooltipdiv').css('visibility','visible');
});

Quiero que la información sobre herramientas se muestre solo cuando finalicen las llamadas ajax, la información sobre herramientas esté completamente creada y no se superponga con la anterior o algo así. Funciona correctamente cuando ajax está en caché, pero no funciona cuando no lo está.

Intenté usar async: false, pero las congelaciones que crea son menos fáciles de usar que la información sobre herramientas superpuesta. Intenté devolver la llamada, pero no parece funcionar como yo quiero... o tal vez lo hice mal.

Cualquier ayuda será bienvenida :)

Edit:

Aquí está el código de mi función BuildTooltip. Sin embargo, llamó a otras funciones, y todo tiene alrededor de 400 líneas para no copiar todo :(

function BuildTooltip(element){
$('#tooltipdiv').remove();
if(String(element).indexOf('dbitem.php?db=')!=-1){
    url=String(element);
    var db=url.substring(url.indexOf('=')+1,url.indexOf('&'));
    $('body').append('<div class="" id="tooltipdiv"><div class="" id="uctt">\
        <div class="" id="itemttheader"></div><span class="" id="nomitem">\
        </span><div class="" id="imgitem"><img></img></div><div class="" id="type">\
        </div></div><div id="cd"></div><div class="" id="armor"><span class="" id="minarmor">\
        </span><span class="hash">-</span><span class="" id="maxarmor"></span> Armor</div><div class="" id="dmgweap">\
        <span class="" id="min"></span><span class="hash">-</span><span class="" id="max"></span> Damage</div>\
        <div class="" id="dmgweapnorm"><span class="" id="minmin"></span>\
        <span class="hash">-</span><span class="" id="maxmin"></span><span class="hash">-</span><span class="" id="minmax"></span><span class="hash">-</span>\
        <span class="" id="maxmax"></span> Damage</div><div class="" id="dpsnorm">\
        <span class="" id="mindamagepersec"></span> <span class="hash">-</span> <span class="" id="maxdamagepersec">\
        </span><p> Damage Per Second</p></div><div class="" id="dps"><span class="" id="damagepersec">\
        </span><p> Damage Per Second</p></div><div class="" id="attackspeed"><span class="" id="aps">\
        </span> Attacks Per Second</div><div class="" id="effect"></div><div class="" id="effectpsk">\
        </div><span class="" id="slot"></span><div id="useless"></div><div id="set"><span></span><div id="part0" class="part"></div>\
        <div id="part1" class="part"></div><div id="part2" class="part"></div><div id="part3" class="part"></div>\
        <div id="part4" class="part"></div><div id="part5" class="part"></div></div><div class="" id="requiredlevel">Required level : \
        <span class="" id="minlvl"></span></div><div class="" id="rewards">Rewards : \
        <span class="" id="reward"></span></div><div class="" id="points">\
        <span class="" id="point"></span> Points</div><div class="" id="durability">\
        Durability : <span class="" id="duramin"></span><span class="hash">-</span><span class="" id="duramax">\
        </span></div></div></div>');
    var offset=$(element).offset();
    request = $.ajax({
    url: "getphp/gettooltip.php",
    type: "GET",
    data: {db : db, id : url.substring(url.lastIndexOf('=')+1)},
    dataType: "JSON"
    });
    request.done(function(msg){
    FillInTooltip(msg,db)
    });
}

}

La función FillInTooltip usa el resultado de ajax, lo formatea, lo incluye en divs, si el resultado coincide con una condición, llama a otro ajax, etc.

preguntado el 03 de mayo de 12 a las 14:05

debe incluir el código de la BuildTooltip ¡Funciona para que te ayudemos! la respuesta tiene que ser mostrar la información sobre herramientas dentro de la función de devolución de llamada; ¡cualquier otro lugar es una tontería! -

1 Respuestas

Puede mostrar información sobre herramientas sobre el éxito de la solicitud de Ajax:

$.ajax({
    type: "POST",
    url: URL, // your url
    success: function (html) {
        $('#tooltipdiv').css('visibility','visible');
    }
});

Ahora, la información sobre herramientas no debería mostrarse hasta que se haya completado la solicitud de Ajax.

contestado el 03 de mayo de 12 a las 14:05

¿Cómo usar el resultado de ajax con este método? - user1372445

puede acceder al resultado de ajax como html desde el éxito: función (html) { alerta (html); } - Sameh Serag

logré usar este éxito: función (json) {blabla}, pero no solucionó el problema :( la información sobre herramientas continúa mostrándose antes de crearse por completo y el contenido se superpone cuando se va rápido con el mouse, esto solo ocurre cuando ajax no está en caché. .. - user1372445

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.