我如何将其从 jQuery 转换为 vanilla JS?
How can I convert this from jQuery to vanilla JS?
对于我现在正在处理的所有其他事情,我已经从 jQuery 转换为 vanilla 就好了,但是我想知道如何使用 vanilla JS 执行以下操作。
我想在一组对象上设置悬停事件。在事件处理程序函数中,我想更改某些子元素的某些 css 属性。诀窍是我想 select 这些子元素 class,但确保仅 select 来自触发悬停事件处理程序的元素的子元素。
所以我需要用 vanilla 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() {
// ...
});
});
对于我现在正在处理的所有其他事情,我已经从 jQuery 转换为 vanilla 就好了,但是我想知道如何使用 vanilla JS 执行以下操作。
我想在一组对象上设置悬停事件。在事件处理程序函数中,我想更改某些子元素的某些 css 属性。诀窍是我想 select 这些子元素 class,但确保仅 select 来自触发悬停事件处理程序的元素的子元素。
所以我需要用 vanilla 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() {
// ...
});
});