javascript - 如何将 JQuery 转换为 Vue.js 脚本

标签 javascript jquery vue.js

我正在尝试动态添加类名。当滚动偏移量大于 50 时,该类正在更改导航栏的显示。

这是 jQuery 代码(jQuery 在滚动时折叠导航栏):

  $(window).scroll(function() {
    if ($(".navbar-default").offset().top > 50) {
      $(".navbar-fixed-top").addClass("top-nav-collapse");
    } else {
      $(".navbar-fixed-top").removeClass("top-nav-collapse");
    }
  });

这是我尝试过的:

<script>
export default {
  data() {
    return {
      isSticky: false,
      stickyClass: "top-nav-collapse",
    };
  },
  methods: {
    handleScroll(e) {
      e.prevent();
      if (window.scrollY > 50) {
        this.isSticky = true;
        console.log("deneme");
      } else {
        this.isSticky = false;
      }
    },
  },
  mounted() {
    this.handleScroll();
  },
};
</script>

如何转换此代码?

最佳答案

mounted() 函数中添加滚动事件处理程序并更改那里的 isSticky 变量。

export default {
  data: () => ({
    isSticky: false,
  }),
  mounted() {
    this.scroll_event_handler = () => {
      this.isSticky = window.scrollY > 50;
    }
    window.addEventListener("scroll", this.scroll_event_handler);
  },
  unmounted() {
    window.removeEventListener("scroll", this.scroll_event_handler);
  },
}

然后在您的模板中,您可以像这样添加/删除类:

<nav class="navbar-fixed-top" :class="{'top-nav-collapse': isSticky}">
    ...
</nav>

关于javascript - 如何将 JQuery 转换为 Vue.js 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70673581/

相关文章:

javascript - 使用 KnockoutJS 从 DOM 元素读取内容

javascript - 在这个简单的代码中,为什么函数内部的提示值被忽略了?

javascript - usmaps.js 事件绑定(bind)

javascript - 通过单击 SELECT 选项将 text-INPUT 元素的 VALUE 动态设置为默认值

typescript - 找不到模块 'vuelidate' 的声明文件

javascript - 如何在 Handsontable 中创建跨越两列的行标题?

javascript - JQuery 窗口调整大小不会触发

javascript - 使用 animate.css(描述中的链接)如何在特定事件完成时触发动画

javascript - 使用 SSL 运行 vuejs 开发服务器(通过 HTTPS 提供服务)

vue.js - vue.js 2 : Access props in mounted function