Tôi đã cố gắng tạo chú giải javascript rất đơn giản với jQuery nhưng tôi đã nhấn vào một bức tường gạch. Ý tưởng là có ít phần tử nội dòng (span
) bên trong một div
. Phần tử span
sẽ chứa chú giải công cụ div
với một chút html (hình ảnh và liên kết). Chú giải công cụ sẽ được mở khi được nhấp vào phần tử span
và đóng khi được nhấp bên ngoài hoặc bên ngoài chú giải công cụ.cách đóng chú giải công cụ jQuery
Cho đến nay, việc mở chú giải công cụ không phải là vấn đề nhưng đóng.
<!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>
tôi dường như không thể tìm thấy một cách để đóng tooltip nếu nhấp chuột nằm ngoài span
và tooltip.
Hãy cố gắng thêm một chút thông tin cho câu trả lời của bạn. –