Ich habe versucht, sehr einfach Javascript Tooltip mit jQuery zu machen, aber ich habe eine Mauer getroffen. Die Idee ist, ein kleines Inline-Element (span
) in einem div
zu haben. Das span
Element enthält einen Tooltip div
mit ein wenig HTML (Bild und Link). Tooltip sollte geöffnet werden, wenn auf das Element span
geklickt und geschlossen wird, wenn außerhalb oder außerhalb des Tooltips geklickt wird.wie man jQuery tooltip schließt
Bis jetzt ist das Öffnen des Tooltips kein Problem, aber Schließen ist.
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<style>
#colors > div {
background-color: red;
height: 50px;
width: 50px;
margin: 5px;
}
#colors > div > span {
min-height: 10px !important;
min-width: 10px !important;
border: 3px solid black;
position: relative;
}
.tooltip {
border: 2px solid blue;
display: none;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function() {
// generate boxes and tooltips
for (var i = 0; i < 9; i++) {
$('#colors').append('<div id="' + i + '"><span><div class="tooltip"><a href="#">add to favorites</a></div></span></div>');
}
$('#colors').delegate('span', 'click', function (event) {
$(this).children('.tooltip').css({position:'absolute', top:'5px', left:'5px'}).fadeIn();
// bottom one won't work
//event.stopPropagation();
});
$(document).delegate('body', 'click', function (event) {
var that = this
$.each($('.tooltip'), function (index, element) {
// it's always visible ...
//if ($(element).is(':visible')) {
// doesn't work either
if ($(element).is(':visible') && $(element).has(event.target).length === 0) {
var s = event.target;
console.log([($(s) == event.target), event.target, index, element, $(element).has(event.target).length, that]);
}
});
});
})
</script>
</head>
<body>
<div id="colors"></div>
</body>
</html>
Ich kann nicht den Tooltip erscheinen, einen Weg zu finden, um zu schließen, wenn Klick außerhalb des span
und Tooltip ist.
Bitte versuchen Sie es ein wenig mehr Informationen, um Ihre Antworten hinzuzufügen. –