【问题标题】:jQuery in Typescript: Property 'attr' does not exist on type 'JQueryStatic<HTMLElement>'.tsTypescript 中的 jQuery:“JQueryStatic<HTMLElement>”.ts 类型上不存在属性“attr”
【发布时间】:2020-09-16 21:48:27
【问题描述】:

我在 typescript 中使用 jQuery,并希望添加平滑滚动。我收到一个错误

jquery 中的 $.attr:“JQueryStatic”类型上不存在属性“attr”

我该如何处理这个错误?

$(document).on('click', 'a[href^="#"]', function (event) {
  event.preventDefault();

  $('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top
  }, 500);
});

【问题讨论】:

  • 试试$(this).attr('href') - 不是$.attr
  • 好消息是,我的打字稿没有错误了。你能不能解释一下,为什么现在这样有效?不好的是,仍然没有流畅的滚动。这不起作用
  • 如果没有看到您的标记,很难提供帮助,但是如果您需要的话,这里有一些使用 CSS 和 jQuery 平滑滚动的示例。 css-tricks.com/snippets/jquery/smooth-scrolling
  • 我发现了错误。它在我的情况下不起作用 atm,因为我的锚就像这样
    。我需要斜线,因为我需要从不同的页面调用锚点。但斜线代码不起作用。

标签: jquery typescript


【解决方案1】:

试试这样的:

$(document).on('click', 'a[href^="#"]', function (event) {
  event.preventDefault();
  var offset = $(this).offset().top;

  $('html, body').animate({
    scrollTop: offset
  }, 500);
});

我认为应该是这样的。我认为您试图做的是获取属性的偏移量,这是无效的:

$(this).attr('href').offset // undefined

你需要获取刚刚被点击的a元素的偏移量。

$(this).offset().top

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 2017-07-22
    • 2018-06-08
    • 1970-01-01
    • 2018-03-08
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多