【问题标题】:How can I convert this from jQuery to vanilla JS?如何将其从 jQuery 转换为 vanilla JS?
【发布时间】:2016-01-27 17:14:07
【问题描述】:

对于我现在正在处理的所有其他事情,我已经从 jQuery 转换为 vanilla 就好了,但是我想知道如何使用 vanilla JS 执行以下操作。

我想在对象数组上设置悬停事件。在事件处理函数中,我想更改一些子元素的一些 CSS 属性。诀窍是我想按类选择这些子元素,但请确保只从触发悬停事件处理程序的元素中选择子元素。

所以我需要用 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>

【问题讨论】:

标签: javascript jquery css events hover


【解决方案1】:

尝试使用css :hover

.item .qLeft > img {
  /* default settings */
}

.item .qRight > img {
  /* default settings */
}

.item:hover .qLeft > img {
  /* do stuff */
}

.item:hover .qRight >img {
  /* do stuff */
}

【讨论】:

  • 我想做javascript——不是css! :)
  • 为什么不使用纯 CSS 呢?
  • @Bubbas,为什么?你所展示的只是你正在添加一个 box-shadow 样式。仅在 css 中执行此操作比在 js 中执行效率更高。
  • 我智障。是的 - 最初我想做一些 JS 的东西,但你 - 在这一点上,我所做的只是改变风格。哈哈。很高兴我有你的回答指出这一点!
【解决方案2】:

这是解决方案的一部分。您应该能够弄清楚如何实现其余部分:

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() {
    // ...
  });
});

【讨论】:

  • 这很漂亮:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2016-10-30
  • 2021-03-11
  • 1970-01-01
  • 2020-07-21
  • 2020-07-12
  • 2021-12-11
相关资源
最近更新 更多