寻求each语句的等效for循环替代方案(IDE识别each函数异常)
用原生for循环替代jQuery的.each()实现滚动淡入效果
当然可以!完全能用普通的for循环来替换掉jQuery的.each()方法,实现一模一样的滚动淡入效果,还能避开你IDE识别不了.each()的问题。下面是改写后的代码:
$(function() { $(window).scroll(function() { // 把jQuery对象转为原生DOM元素数组 const fadeElements = $('.fadeInBlock').get(); // 用for循环遍历所有目标元素 for (let i = 0; i < fadeElements.length; i++) { const $element = $(fadeElements[i]); const bottom_of_object = $element.position().top + $element.outerHeight(); let bottom_of_window = $(window).scrollTop() + $(window).height(); // 保持原来的偏移量调整 bottom_of_window = bottom_of_window + 200; if (bottom_of_window > bottom_of_object) { $element.animate({ 'opacity': '1' }, 1000); } } }); });
关键说明:
- 我用了
.get()方法把jQuery选择器返回的集合转换成原生DOM元素数组,这样就能用标准的for循环遍历了 - 循环里的逻辑和你原来的
.each()代码完全一致:计算元素和窗口的位置、判断显示条件、执行淡入动画 - 原来的
$(this)被替换成了$(fadeElements[i]),因为现在是通过数组索引获取每个元素
另外你提到同一文件里其他jQuery代码能正常运行,但IDE识别不了.each(),这大概率是IDE的语法检查插件或者代码提示的小问题,不过用这种原生循环的方式不仅能解决功能需求,还能完美避开这个识别bug。
内容的提问来源于stack exchange,提问作者Joelad
相关产品推荐
相关产品推荐

