将 Jquery 脚本重写为 vanilla Javascript

Posted

技术标签:

【中文标题】将 Jquery 脚本重写为 vanilla Javascript【英文标题】:rewriting a Jquery script to vanilla Javascript 【发布时间】:2018-12-20 04:28:12 【问题描述】:

我正在尝试用 vanilla javascript 重写我喜欢的 jquery 脚本,但进展不顺利 这是原文: jQuery:

$(window).scroll(function()
    if ($(window).scrollTop() >= 225) 
        $('.sticky-nav').addClass('fixed-header');
        $('.site-title').addClass('visible-title');
    
    else 
        $('.sticky-nav').removeClass('fixed-header');
        $('.site-title').removeClass('visible-title');
    
);

到目前为止,我已将其更改为:

window.onscroll = function() 
 if (document.window.scrollTop == 225 || document.documentElement.scrollTop == 225) 
        $('.sticky-nav').addClass('fixed-header');
        $('.site-title').addClass('visible-title');
    
    else 
        $('.sticky-nav').removeClass('fixed-header');
        $('.site-title').removeClass('visible-title');
    

codepen:https://codepen.io/robot_head/pen/WKverK

我不知道如何处理 if 语句,或者如何重写添加和删除类行。这里的一些指示会有所帮助

【问题讨论】:

document.querySelector('.sticky-nav').classList.add() 以防您知道它只有一个匹配的元素。否则请改用document.querySelectorAll,但请注意结果是NodeList(您必须手动迭代)。 对 if 语句有什么建议吗? jquery 一个工作 javascript 一个不工作 window.scrollY 我想这就是你需要的。我不知道 jQuery 是做什么的。这是检查用户从页面顶部/开始滚动了多远? 请不要将答案编辑到您的问题中。这使得未来的读者几乎不可能跟随 - 请注意,*** 主要是一个网站,您可以在其中找到问题的答案而无需询问 - 因为其他人提出了类似的问题,您可以使用您的搜索引擎找到答案选择。 要求重写整个脚本是题外话,因为它太宽泛了。问题应该集中,如何实现scrollTop跨浏览器以及如何添加/删除类跨浏览器。如果你搜索这些,你会发现它们已经存在。 ***.com/questions/20106827/… 和 ***.com/questions/26695272/… 【参考方案1】:

你可以使用

document.querySelector('.sticky-nav').classList.add()

document.querySelector('.sticky-nav').classList.remove()

如果您知道它只有一个匹配的元素(或者如果第一个匹配是您想要的)。

否则请改用document.querySelectorAll,但请注意结果是NodeList(即使它只找到一个元素),您必须手动迭代它,例如

let navitems = document.querySelectorAll('.nav-item');
for (let i = 0; i < navitems.length; i++) 
  navitem[i].classList.add('processed');

【讨论】:

以上是关于将 Jquery 脚本重写为 vanilla Javascript的主要内容,如果未能解决你的问题,请参考以下文章

将 jQuery each() 循环重新设计为 Vanilla JS

当弹出窗口关闭时,我将如何引发事件(jQuery 或 vanilla Javascript)?

html Vanilla JavaScript和jQuery版本将页面滑回顶部

DOM 渲染后在 React 中执行 Vanilla JS 脚本

javascript [Factorialize]将#vanilla #script数量因子化的脚本

单击链接完整脚本后将图形另存为图像