[英]How can I convert this from jQuery to vanilla JS?
对于我现在正在从事的所有其他工作,我已经从jQuery转换为Vanilla很好,但是我想知道如何使用Vanilla JS进行以下操作。
我想在对象数组上设置一个悬停事件。 在事件处理函数中,我想更改某些子元素上的某些CSS属性。 诀窍是我想按类选择这些子元素,但要确保仅从触发悬停事件处理程序的元素中选择子元素。
所以我需要用香草JS替换.hover().find()和.css()。
$('.item').hover(function () {
$(this).find('.qLeft > img').css('box-shadow', '2px 2px 5px -1px black');
$(this).find('.qRight > img').css('box-shadow', '-2px 2px 5px -1px black');
}, function () {
$(this).find('.qLeft > img').css('box-shadow', '3px 5px 8px -2px black');
$(this).find('.qRight > img').css('box-shadow', '-3px 5px 8px -2px black');
});
<li style="float: left;" class="item">
<div class="CardHeader">
<h3>Appointment Calendar Book</h3>
</div>
<div>
<img src="Assets/Calendar%20-%20Appointment%20Book4.png" />
</div>
<div class="qContainer">
<div class="qLeft">
<img src="Assets/BlackGreenMinus.png" />
</div>
<div class="qCenter">1</div>
<div class="qRight">
<img src="Assets/BlackGreenPlus.png" />
</div>
</div>
</li>
尝试使用css
:hover
.item .qLeft > img {
/* default settings */
}
.item .qRight > img {
/* default settings */
}
.item:hover .qLeft > img {
/* do stuff */
}
.item:hover .qRight >img {
/* do stuff */
}
这是解决方案的一部分。 您应该能够弄清楚其余的实现方法:
var items = document.getElementsByClassName("item");
Array.prototype.forEach.call(items, function(element) {
element.addEventListener("mouseover", function() {
elements = this.querySelectorAll(".qLeft>img");
Array.prototype.forEach.call(elements, function(el) {
el.style.boxShadow = "2px 2px 5px -1px black";
});
// same for qRight
});
element.addEventListener("mouseout", function() {
// ...
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.