У меня есть одна проблема с которой я очень часто сталкиваюсь при написании js кода. Объясню на пример. У меня сейчас есть несколько блоков разных цветов и для каждого нужно сделать полу-прозрачную маску при наведении.
<div class="test" >
<div class="test-content" id="test-content-1"></div>
<div class="mask" id="mask-1"></div>
</div>
<div class="test">
<div class="test-content" id="test-content-2"></div>
<div class="mask" id="mask-2"></div>
</div>
<div class="test" id="test-3">
<div class="test-content" id="test-content-3"></div>
<div class="mask" id="mask-3"></div>
</div>
.test{
background-color: red;
position: relative;
}
.mask{
position: absolute;
width: 100%;
left: 0;
top: 0;
background-color: rgba(0, 0, 0, 0.6);
display: none;
}
Обычно я решаю это, присваивая id Для каждого div-a с классом mask и test и просто дублирую код.
$(document).ready(function () {
$('#test-1').mouseover(function () {
$('#mask-1').css('display','block')
});
});
$(document).ready(function () {
$('#test-1').mouseout(function () {
$('#mask-1').css('display','none')
});
});
$(document).ready(function () {
$('#test-2').mouseover(function () {
$('#mask-2').css('display','block')
});
});
$(document).ready(function () {
$('#test-2').mouseout(function () {
$('#mask-2').css('display','none')
});
});
$(document).ready(function () {
$('#test-3').mouseover(function () {
$('#mask-3').css('display','block')
});
});
$(document).ready(function () {
$('#test-3').mouseout(function () {
$('#mask-3').css('display','none')
});
});
И такие задачи, где нужно реализовать одинаковый функционал с элементами с одинаковым классом встречаются постоянно и использую я вот такой костыльный метод. Это не очень удобно и один и тот же код постоянно дублируется с разными id. Как написать скрипт, таким образом, чтобы js сам получал нужный id у элементов с одинаковыми классами?То есть, чтобы можно было обратиться к элементу с классом "test" и "mask", вытащить у них id и уже вешать действия к элементам по полученному id. Надеюсь вопрос понятен.
Конкретно в этом случае это можно реализовать вообще 2-мя строками в css без js
.test {
background-color: red;
position: relative;
height: 40px;
margin-bottom: 10px;
}
.mask {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
background-color: rgba(0, 0, 0, 0.6);
display: none;
}
.test:hover .mask{
display: block;
}
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
Если более общий случай, то события можно вешать на класс, а не id
$('.test').mouseover(function() {
$(this).children('.mask').css('display', 'block')
});
$('.test').mouseout(function() {
$(this).children('.mask').css('display', 'none')
});
.test {
background-color: red;
position: relative;
height: 40px;
margin-bottom: 10px;
}
.mask {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
background-color: rgba(0, 0, 0, 0.6);
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
<div class="test">
<div class="test-content"></div>
<div class="mask"></div>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Сейчас, чтобы найти нужного мне предка, я пишу elemparentElement
При клике отправляется объект на сервер, статус == 200, но success не срабатывает, вместо него работает error, что не так ?
Мне нужно вернуть true , если вводимое значение содержит любые цифры, а так же точку или запятую, или двоеточиеПробовал так, но работает некорректно:
Помогите пожалуйста понять синтаксис выражения на Javascript в React (Mobx) :