2012-08-07 19 views
7

Seguendo this question qui su StackOverflow, ho creato un popover di bootstrap twitter che viene caricato su hover. Tuttavia, il ritardo non viene utilizzato, il popover viene visualizzato immediatamente. Ecco il mio codice:Popup Bootstrap Twitter ignora il ritardo

$('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'); 
}); 

Il ritardo viene semplicemente ignorato. Cosa posso fare?

Grazie per il vostro aiuto o suggerimenti!

+3

Lo sapevate quel ritardo 'non si applica al tipo di trigger manuale '? [doc] (http://twitter.github.com/bootstrap/javascript.html#popovers) - e fare 'popover ('show')' è come un manuale. E passare un oggetto come secondo parametro non avrà certamente alcun effetto. – Sherbrow

+2

No, non lo sapevo prima. Ma come posso mostrare il popover, se non usando 'popover ('show')'? – HombreFab

+1

Il ritardo e i popover sono un po 'disordinati ... [problema github] (https://github.com/twitter/bootstrap/issues/512). Questo [jsfiddle] (http://jsfiddle.net/Sherbrow/ERY4S/) funzionerebbe? – Sherbrow

risposta

7

Aveva un problema simile, risolto risolvendo l'obiettivo. Sarebbe simile a questa ...

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

ancora meglio con un timeout, se si vuole un trigger manuale ..

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

speranza è aiuta a qualcun altro ...

+0

'.focus()' sembra non funzionare più? – DavidScherer