2012-08-07 32 views
7

Después de this question aquí en stackoverflow, creé un popover bootstrap de twitter que se carga al suspenderse. Sin embargo, la demora no se utiliza, el popover solo se muestra de inmediato. Aquí está mi código:Twitter Bootstrap Popup ignora la demora

$('body').delegate('.withajaxpopover', 'hover', function(event) { 
    if (event.type === 'mouseenter') { 
     var el=$(this); 
     $.get(el.attr('data-load'), function(d) { 
     el.popover({delay: { 
        show: 750, 
        hide: 100 
        }, 
        title: "MyTitle", 
        content: d}).popover('show', 
             {delay: { show: 750, hide: 100 }}); 
        }); 
    } else { 
        $(this).popover('hide'); 
    } 
}); 
$('body').delegate('.withajaxpopover', 'click', function(event) { 
    $(this).popover('hide'); 
}); 

La demora se ignora. ¿Que puedo hacer?

¡Gracias por su ayuda o sugerencias!

+3

¿Sabías ese retraso 'no se aplica al tipo de disparo manual'? [doc] (http://twitter.github.com/bootstrap/javascript.html#popovers) - y hacer 'popover ('show')' es como manual. Y pasar un objeto como segundo parámetro ciertamente no tendrá ningún efecto. – Sherbrow

+2

No, no sabía eso antes. Pero, ¿cómo puedo mostrar el popover, si no estoy usando 'popover ('show')'? – HombreFab

+1

El retraso y los popovers son un poco complicados ... [problema de github] (https://github.com/twitter/bootstrap/issues/512). ¿Funcionaría eso [jsfiddle] (http://jsfiddle.net/Sherbrow/ERY4S/)? – Sherbrow

Respuesta

7

Tuve un problema similar, lo resolvió enfocando el obj. Sería algo como esto ...

$('#yourobj').popover({ 
    trigger: 'focus', 
    delay: 1000 
}).focus(); 

aún mejor con un tiempo de espera, si quieres un disparador manual ..

setTimeout(function() { 
    $('#yourobj').popover('show'); 
}, 500); 

esperanza es ayuda de otra persona ...

+0

'.focus()' ya no parece estar funcionando? – DavidScherer