javascript - $(window) 等效项和其他 Jquery 到 Vanilla JS 不起作用

标签 javascript ecmascript-6

我有这段代码;

class toTop {
  constructor(topButton) {
    this.topButton = topButton;
    this.topButton = $('#to_top');

    if (this.topButton.length > 0) {
      $(window).on('scroll', () => {
        return this.toggle($(window));
      });

      this.topButton.on('click', function(e) {
        e.preventDefault();
        return window.scrollTo(0, 0);
      });
    }
  }

  toggle(trgt) {
    if (trgt.scrollTop() > 250) {
      return this.topButton.fadeIn();
    }
    return this.topButton.fadeOut();
  }

  render(trgt) {
    return trgt.append(this.topButton);
  }
}

我想知道以下事情;

  1. 什么是纯Javascript,仅用于返回this.toggle($(window))。我尝试使用这个;

    window.addEventListener('滚动', function() { 返回 this.toggle($(window)); });

但不工作。

另外,这部分;

toggle(trgt) {
    if (trgt.scrollTop() > 200) {
      return this.topButton.fadeIn();
    }
    return this.topButton.fadeOut();
  }

  render(trgt) {
    return trgt.append(this.topButton);
  }

我尝试转换为 ES6 但没有成功。如果有人能提供帮助那就太好了。

最佳答案

您尝试的这行代码的问题:

window.addEventListener('scroll', function() { return this.toggle($(window)); });

是您忘记了this的范围发生了变化。如果您像在 jQuery 示例中那样使用箭头函数,您就已经解决了该问题。

window.addEventListener('scroll', () => { return this.toggle($(window)); });

这也可以通过删除大括号和返回来缩短一点

window.addEventListener('scroll', () => this.toggle($(window)));

但是你仍然会遇到一个问题,即 $(window)$('#to_top') 不是 JavaScript 原生的,而是 jQuery 的。

$(window) 最接近的 native 将是 document.body,与 $('#to_top') 最接近的将是document.getElementById('to_top'),但这会破坏 fadeInfadeOut,因为它们不是原生 JavaScript,而是 jQuery 的一部分。

关于javascript - $(window) 等效项和其他 Jquery 到 Vanilla JS 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432423/

相关文章:

javascript - 我一直在我的 javascript 中编辑 dom 元素的 CSS。是否有一个好的模型可以遵循,不允许在我的 javascript 中写入 'CSS'?

javascript - 如何处理 JavaScript 中未定义的函数参数的解构?

javascript - 在 ES6 map 上使用 for..of 循环

reactjs - React js编译错误符合3点

javascript - 如果图像源(img src)具有特定的类或 ID,则将查询字符串添加到图像源(img src)

javascript - 如何在 CouchDB/Cloudant 上获取 "fieldcount"(如字数统计)?

javascript - 如何在 Javascript 或 jQuery 中包含 2 个不同的变量作为第三个变量的属性和值

javascript - 打开/关闭后解决方案消失响应式导航

javascript - ES6 命名空间导入 : behavior of "this"

javascript - `eval` 调用上下文正在评估形参初始值设定项时声明实例化