У меня есть div с классом .MathBox
следующий элемент .ypnLeftRight
Всякий раз, когда пользователь наводит курсор на .MathBox
, видимость .ypnLeftRight
переключается. Это отлично работает, когда есть один элемент .MathBox
, но когда таких элементов много, jquery выбирает все элементы с классом .Mathbox
, и все элементы .ypnLeftRight
переключаются одновременно.
Как переключить только div с классом .ypnLeftRight
сразу после зависшего в данный момент элемента .MathBox
?
$('.MathBox').after('<div class = "ypnLeftRight"><div class = "left-button">«</div><div class = "right-button">»</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();
});
Поскольку 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.
поэтому добавьте еще один метод наведения только для .ypnLeftRight, потому что то, что вы говорите, означает, что при наведении на .ypnleftright он скроется, что не имеет никакого смысла. Вы хотите сделать что-то еще при наведении курсора на .ypnLeftRight. Но показать/скрыть .ypnLeftRight при наведении на MatchBox.
добавление $('.ypnLeftRight').hide(); прежде чем ваш код скроет кнопки по умолчанию. Проблема смягчена! Теперь для наведения на .ypnLeftRight. Когда пользователь наводит курсор на .MathBox, появляются кнопки в .ypnLeftRight, но теперь, когда пользователь наводит курсор на .ypnLeftRight, это означает, что пользователь больше не наводит курсор на .MathBox, поэтому кнопки скрываются. Это делает кнопки бесполезными, поскольку пользователь просто не может их использовать. Спасибо, что проявили интерес и потратили свое время, помогая мне. Нет смайликов для приветствия, так что вот Вулканское приветствие... ?
Решение для этого состоит в том, чтобы обернуть как .MathBox, так и .ypnLeftRight в родительский div и прикрепить зависание к этому div. И вместо того, чтобы скрывать в Javascript, вы должны сделать display: hide в .ypnLeftright css.
Вы размещаете новый контент после Mathbox, но смотрите внутри Mathbox с помощью
find()