我有一个单击显示的工具提示,但是我希望一旦用户单击具有相同ID的div时显示该工具提示。这是因为我会问他们可以单击的问题,而不是在页面上显示他们可以执行的操作。
我不确定使用工具提示是否可行,或者是否有更好的方法来实现此目的。
$("#tooltip1").on('click', function() {
$("button #tooltip1").click();
});
[data-tooltip] {
position: relative;
z-index: 2;
cursor: pointer;
}
/* Hide the tooltip content by default */
[data-tooltip]:before,
[data-tooltip]:after {
visibility: hidden;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0);
opacity: 0;
pointer-events: none;
}
/* Position tooltip above the element */
[data-tooltip]:before {
position: absolute;
bottom: 150%;
left: 50%;
margin-bottom: 5px;
margin-left: -80px;
width: 160px;
content: attr(data-tooltip);
}
/* Triangle hack to make tooltip look like a speech bubble */
[data-tooltip]:after {
position: absolute;
bottom: 150%;
left: 50%;
margin-left: -5px;
width: 0;
content: " ";
font-size: 0;
line-height: 0;
}
/* Show tooltip content on hover */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after {
visibility: visible;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="demo">
<p><button id="tooltip1" data-tooltip="I’m the tooltip text.">I’m a button with a tooltip</button></p>
<p><button id="tooltip2" data-tooltip="I’m the tooltip text.">I’m a button with a tooltip</button></p>
</div>
<div id="tooltip1">
Show tooltip 1
</div>
<div id="tooltip2">
Show tooltip 2
</div>
答案 0 :(得分:2)
首先,您在按钮和div上重复了相同的id
,这是无效的。我建议将id
保留在div
上,但是在按钮上使用一个公共类,您可以将事件处理程序挂接到jQuery中,并带有一个data
属性来存储个人div定位。
然后,您可以通过在工具提示上切换类以更改其visibility
以及使用:hover
来隐藏/显示工具提示,如下所示:
[data-tooltip]:hover:before,
[data-tooltip]:hover:after,
[data-tooltip].show:before,
[data-tooltip].show:after {
visibility: visible;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
然后,您可以在toggleClass()
处理程序中使用click
:
$(".toggle-tip").on('click', function() {
$('#' + $(this).data('id')).toggleClass('show');
});
$(".toggle-tip").on('click', function() {
$('#' + $(this).data('id')).toggleClass('show');
});
[data-tooltip] {
position: relative;
z-index: 2;
cursor: pointer;
}
/* Hide the tooltip content by default */
[data-tooltip]:before,
[data-tooltip]:after {
visibility: hidden;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=0);
opacity: 0;
pointer-events: none;
}
/* Position tooltip above the element */
[data-tooltip]:before {
position: absolute;
bottom: 150%;
left: 50%;
margin-bottom: 5px;
margin-left: -80px;
width: 160px;
content: attr(data-tooltip);
}
/* Triangle hack to make tooltip look like a speech bubble */
[data-tooltip]:after {
position: absolute;
bottom: 150%;
left: 50%;
margin-left: -5px;
width: 0;
content: " ";
font-size: 0;
line-height: 0;
}
/* Show tooltip content on hover */
[data-tooltip]:hover:before,
[data-tooltip]:hover:after,
[data-tooltip].show:before,
[data-tooltip].show:after {
visibility: visible;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: progid: DXImageTransform.Microsoft.Alpha(Opacity=100);
opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="demo">
<p><button id="tooltip1" data-tooltip="I’m the tooltip text.">I’m a button with a tooltip</button></p>
<p><button id="tooltip2" data-tooltip="I’m the tooltip text.">I’m a button with a tooltip</button></p>
</div>
<div class="toggle-tip" data-id="tooltip1">
Show tooltip 1
</div>
<div class="toggle-tip" data-id="tooltip2">
Show tooltip 2
</div>
答案 1 :(得分:0)
您已经重复了“ tooltip1”的ID,首先将ID赋予按钮,然后赋予div。因此,请确保您的ID不会在页面中重复出现,并为元素提供唯一的ID。