Показывать всплывающую подсказку при нажатии на другой элемент - PullRequest
0 голосов
/ 09 июля 2019

У меня есть всплывающая подсказка, которая отображается при нажатии, однако я хочу, чтобы она отображалась после того, как пользователь щелкнул элемент с тем же идентификатором. Это потому, что у меня будут вопросы, на которые они могут щелкнуть, а затем отобразится, где они могут сделать это на странице.

Я не уверен, возможно ли это с помощью всплывающей подсказки, или есть лучший способ сделать это.

$("#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>

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Сначала вы повторили то же самое id на кнопках и элементах div, что недопустимо.Я бы предложил оставить 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>
0 голосов
/ 09 июля 2019

Вы повторили идентификатор для «tooltip1», сначала вы дали идентификатор кнопке, а затем div.Поэтому убедитесь, что ваш идентификатор не повторяется на странице и присвойте уникальные идентификаторы элементам.

...