<!DOCTYPE html>
<html lang="en">
<head>
	<title>Bootstrap Example</title>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.js"></script>
</head>
<body>

	<div class="container">
		<h3>Tooltip Example</h3>
		<a  data-toggle="tooltip" title="Hooray!">Hover over me</a>
	</div>

	<script>
	$(document).ready(function(){
		$('[data-toggle="tooltip"]').tooltip();  
                $('[data-toggle="tooltip"]').off("mouseenter mouseleave");
		$('[data-toggle="tooltip"]').tooltip();

	});
	</script>

</body>
</html>

¿Por qué no puedo obtener información sobre herramientas incluso si inicializo dos veces?

0
Mahi 16 feb. 2017 a las 16:14

3 respuestas

La mejor respuesta

Comentario de DavidG con el registro. Básicamente, debe destruir por completo el tooltip si desea poder llamar al tooltip nuevamente y hacer que conecte a los oyentes. Al hacer una llamada a off, solo eliminabas a los oyentes pero no destruías a tooltip. Por lo tanto, cuando llamaste a tooltip por segunda vez, no inicializaría tooltip nuevamente. Debido a la siguiente línea:

if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))

https://github.com/twbs/bootstrap/blob/v3-dev/js/tooltip.js#L501

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Bootstrap Example</title>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.js"></script>
</head>
<body>

	<div class="container">
		<h3>Tooltip Example</h3>
		<a data-toggle="tooltip" data-placement="top" title="Hooray!">Hover over me</a>
	</div>

	<script>
	$(document).ready(function(){
            console.log("init");
            $('[data-toggle="tooltip"]').tooltip();
            setTimeout(function() {
                console.log("destroy");
                $('[data-toggle="tooltip"]').tooltip("destroy");
                setTimeout(function() {
                    console.log("reinit");
                    $('[data-toggle="tooltip"]').tooltip();
                }, 5000);
            }, 5000);
	});
	</script>

</body>
</html>
1
Danny 16 feb. 2017 a las 13:57

Prueba esto:

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Bootstrap Example</title>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.js"></script>
</head>
<body>

	<div class="container">
		<h3>Tooltip Example</h3>
		<a id="anchor" data-toggle="tooltip" title="Hooray!">Hover over me</a>
	</div>

	<script>
    var handler = function (e) {
    	$('[data-toggle="tooltip"]').tooltip();  
    }
	$(document).ready(function(){
    $('[data-toggle="tooltip"]').off("mouseenter mouseleave",handler);
    $('[data-toggle="tooltip"]').on("mouseenter mouseleave",handler);
	});
	</script>

</body>
</html>

Funciona, aunque creo que podría haber mejores soluciones si elaboras más sobre qué es exactamente lo que quieres hacer.

0
Wildhammer 16 feb. 2017 a las 13:37

Eliminé la declaración duplicada y agregué una ubicación de información sobre herramientas y ahora funciona

<!DOCTYPE html>
<html lang="en">
<head>
	<title>Bootstrap Example</title>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.js"></script>
</head>
<body>

	<div class="container">
		<h3>Tooltip Example</h3>
		<a data-toggle="tooltip" data-placement="top" title="Hooray!">Hover over me</a>
	</div>

	<script>
	$(document).ready(function(){
		$('[data-toggle="tooltip"]').tooltip(); 
	});
	</script>

</body>
</html>
0
Sean 16 feb. 2017 a las 13:22