Выбрать только элемент, который в данный момент зависает с помощью jquery, и переключить видимость следующего элемента?

У меня есть div с классом .MathBox следующий элемент .ypnLeftRight Всякий раз, когда пользователь наводит курсор на .MathBox, видимость .ypnLeftRight переключается. Это отлично работает, когда есть один элемент .MathBox, но когда таких элементов много, jquery выбирает все элементы с классом .Mathbox, и все элементы .ypnLeftRight переключаются одновременно.

Как переключить только div с классом .ypnLeftRight сразу после зависшего в данный момент элемента .MathBox?

$('.MathBox').after('<div class = "ypnLeftRight"><div class = "left-button">&laquo;</div><div class = "right-button">&raquo;</div></div>');

$('.right-button').click(function() {
  event.preventDefault();
  $('.MathBox').animate({
    scrollLeft: "+=200px"
  }, "slow");
});

$('.left-button').click(function() {
  event.preventDefault();
  $('.MathBox').animate({
    scrollLeft: "-=200px"
  }, "slow");
});

$('.MathBox , .ypnLeftRight').hover(function() {
  $('.ypnLeftRight').show();
}, function() {
  $('.ypnLeftRight').hide();
});
/*
  $('.MathBox , .ypnLeftRight').hover(function(){
    $(this).find('.ypnLeftRight').show();
  }, function(){
    $(this).find('.ypnLeftRight').hide();
  });*/
.MathBox {
  width: 100%;
  border: dashed 1px #dddddd;
  overflow: auto;
  padding: 0 1em;
  box-sizing: border-box;
}

.ypnLeftRight {
  display: grid;
  grid-template-columns: 50% 50%;
  text-align: center;
  background: rgba(0, 0, 0, 0.5);
  height: 1.5em
}

.ypnLeftRight>div:hover {
  background: rgba(0, 0, 0, 0.8);
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "postContentItem">
  1<br/>
  <div class = "MathBox">
    x^2 + 3x + 30 -32x^3 +16x^4 -x^2 -55x + 60= 0<br/>text{This is the required equation obtained by solving the quadratic equation by factorization method.
  </div>
  222<br/> 222
  <br/>1<br/>
  <div class = "MathBox">
    x^2 + 3x + 30 -32x^3 +16x^4 -x^2 -55x + 60= 0<br/>This is the required equation obtained by solving the quadratic equation by factorization method.
  </div>
  222<br/> 222
  <br/>
</div>

Я пробовал следующее, но, похоже, это не работает.

$('.MathBox , .ypnLeftRight').hover(function(){
  $(this).find('.ypnLeftRight').show();
}, function(){
  $(this).find('.ypnLeftRight').hide();
});

Вы размещаете новый контент после Mathbox, но смотрите внутри Mathbox с помощью find()

charlietfl 09.04.2019 18:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку ypnLeftRight всегда скрыт, вам не нужно наводить на него курсор. Наведение применяется только к .MathBox. Во-вторых... вам нужно нацелить .next() зависания над .MathBox следующим образом:

$('.MathBox').hover(function(){
  $(this).next('.ypnLeftRight').show();
}, function(){
  $(this).next('.ypnLeftRight').hide();
});

Цель OP — использовать кнопки внутри .ypnLeftRight при наведении курсора на .MathBox. Приведенный выше код не может этого сделать, потому что DIV не заключен вместе в родительский div. Ниже приведен код, который служит цели ОП.

Заключите div .MathBox в div

<div class = "MathBoxParent">
  <div class = "MathBox">
    x^2 + 3x + 30 -32x^3 +16x^4 -x^2 -55x + 60= 0<br/>text{This is the required equation obtained by solving the quadratic equation by factorization method.
  </div>
</div>

Затем используйте следующий код

$('.MathBoxParent').hover(function(){
  $(this).find('.ypnLeftRight').show();
}, function(){
  $(this).find('.ypnLeftRight').hide();
});

Мне нужно навести курсор на .ypnLeftRight, потому что он содержит кнопки для прокрутки содержимого .MathBox. Ваш метод работает, но .ypnLeftRight изначально не скрыт, он скрывается после того, как пользователь навел курсор на .MathBox.

YourPalNurav 09.04.2019 19:20

поэтому добавьте еще один метод наведения только для .ypnLeftRight, потому что то, что вы говорите, означает, что при наведении на .ypnleftright он скроется, что не имеет никакого смысла. Вы хотите сделать что-то еще при наведении курсора на .ypnLeftRight. Но показать/скрыть .ypnLeftRight при наведении на MatchBox.

Nawed Khan 09.04.2019 19:34

добавление $('.ypnLeftRight').hide(); прежде чем ваш код скроет кнопки по умолчанию. Проблема смягчена! Теперь для наведения на .ypnLeftRight. Когда пользователь наводит курсор на .MathBox, появляются кнопки в .ypnLeftRight, но теперь, когда пользователь наводит курсор на .ypnLeftRight, это означает, что пользователь больше не наводит курсор на .MathBox, поэтому кнопки скрываются. Это делает кнопки бесполезными, поскольку пользователь просто не может их использовать. Спасибо, что проявили интерес и потратили свое время, помогая мне. Нет смайликов для приветствия, так что вот Вулканское приветствие... ?

YourPalNurav 09.04.2019 19:48

Решение для этого состоит в том, чтобы обернуть как .MathBox, так и .ypnLeftRight в родительский div и прикрепить зависание к этому div. И вместо того, чтобы скрывать в Javascript, вы должны сделать display: hide в .ypnLeftright css.

Nawed Khan 09.04.2019 20:05

Другие вопросы по теме