如何在 TypeScript 中扩展 JQuery 函数

2024-06-28

我正在 TypeScript 上重写一些 JS 代码,并遇到模块导入问题。例如,我想写我的toggleVisiblity功能。这是代码:

/// <reference path="../../typings/jquery/jquery.d.ts" />

import * as $ from "jquery";

interface JQuery {
    toggleVisibility(): JQuery;
}

$.fn.extend({
    toggleVisibility: function () {
        return this.each(function () {
            const $this = $(this);
            const visibility = $this.css('visibility') === 'hidden' ? 'visible' : 'hidden';
            $this.css('visibility', visibility);
        });
    }
});

const jQuery = $('foo');
const value = jQuery.val();
jQuery.toggleVisibility();

但问题是不知什么原因toggleVisibility没有添加到JQuery接口因此我收到错误Property 'toggleVisibility' does not exist on type 'JQuery'.,尽管它看到了其他方法(val, each等等)。

为什么它不起作用?


尝试将

interface JQuery {
    toggleVisibility(): JQuery;
}

在没有导入/导出语句的单独文件内。 这对我有用。但知道为什么会很有趣。

EDIT:在这个帖子的答案中对此行为有一个很好的解释:如何扩展“Window”打字稿接口 https://stackoverflow.com/questions/30960386/how-to-extend-the-window-typescript-interface#answer-30961346

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TypeScript 中扩展 JQuery 函数 的相关文章

  • JQuery mouseover 函数多次触发

    我很长时间以来一直使用这种方法来为整个类 按钮等 设置事件 div bigButton mouseover function this style backgroundColor dfdfdf 然而 在进行一些测试时 我刚刚注意到 当将鼠标
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 如何使用接口获取对象的子集?

    假设我有这个类和接口 class User name string age number isAdmin boolean interface IUser name string age number 然后我从某处获取这个 json 对象 c
  • 本地化 Win7 版本上的 UI 截断

    我有两个分别用 C NET 3 和 Wise Installer 开发的 UI UI 是向导页面 这在 Win 7 英文操作系统上完美运行 但是当我在Win7韩语或中文上部署该应用程序时 我看到了截断 即使我对字体进行硬编码 我也会看到这个
  • JS:event.touches 属性如何工作?

    我不明白如何使用 event touches 属性 例如 要获取 iPad iPhone 上的手指数量 您应该使用 event touches length 那么为什么这个示例代码不起作用呢 image bind touchstart fu
  • 根据类名查找 div id

    我必须根据它的类找到div id 如果div有名为searchItemSelected的类 那么如何获取它的div id div class CheckinWithUserRow1 searchItemSelected style heig
  • 从外部 webpack 导入(运行时导入)

    这只是我今天想到的 我没有看到很多信息 所以我将分享这个weird案例以及如何我个人解决了它们 如果有更好的方法请评论 但同时这可能会帮助其他人 在 webpack 包中 每个import require你做的 是由 webpack 使用其
  • 为什么使用 jQuery 预加载图像的尝试不起作用?

    目前我有这个代码 var imgCount 36 var container 3D spin var loaded 0 function onLoad alert loaded loaded if loaded gt imgCount al
  • Union-Type 变为 Intersection-Type

    Problem 我想创建一个工厂 根据给定的参数提供不同的功能 这可以通过条件类型来解决 type DispatchConditional
  • 使用数组或列表在 JSP 中自动完成文本框

    我试图以不同的方式进行自动完成 但根本不起作用 从here https stackoverflow com questions 18612524 jquery autocomplete ui with servlet is not retu
  • 主题需要 RxJS6 asObservable() 吗?

    When is asObservable 需要在主题 例如BehaviorSubject 上获取该主题的可观察值 主题本身也可以转换为 Observable 问题 两者之间有哪些技术差异name1 and name2 应该使用哪一个 nam
  • jQuery 会在过滤选择器中的其他参数之前搜索 ID 吗?

    这个问题与性能有关 如果我使用如下选择器 myID a Does this find myID and filter by a 或者我应该这样写声明 myID find a 我不确定 jQuery 是否足够聪明 可以首先使用 ID 执行此语
  • Jquery 获取 .val

    我需要的是 this 值 this attr value 出现在 这个 中 activities btn id val this val 这是代码 thoughts list click function this attr id this
  • 可以在 iPad 上自动播放 HTML5 视频吗?

    The
  • NgRx 更新对象数组中对象的属性

    我的商店里目前有一系列物品 我想在给定传入对象的情况下更新该对象的单个属性 State export interface ApplicationState allNavGroups INavGroup null Reducer on App
  • React 子组件在重新渲染时丢失动画

    我有一个 React 应用程序 使用 Material UI 和一个组件 我们可以称之为DatePicker 如下所示 出于演示目的而偷偷更改 Material UI 为点击和与其组件的其他交互提供动画效果 当单击已选择的单选按钮或不更改状
  • 如何使用jQuery加载跨域html

    我有 2 个不同的 java web 项目在 2 个不同的 tomcat 服务器上运行 假设 projA 和 projB 在这里 我尝试从 projA 加载 projB 中可用的 html 我只是使用 jQuery load 来实现这一点
  • Backbone.View:delegateEvents 未将事件重新绑定到子视图

    我已将这个问题分解为尽可能小的示例 即 它只是为了演示问题 不一定代表现实世界的场景 假设我有一个父视图 此处为 MainView 其中包含一个子视图 此处为 SubView 如果在任何时候我需要重新渲染父视图 从而重新渲染子视图 我就会丢
  • Mousedown 事件与 ipad/iphone 的兼容性? - jQuery 移动

    我用jquery写了一个小卷轴 卷轴似乎在 PC 和 Mac 上都能完美运行 但它不适用于触摸设备 我想这是由于mousedown被调用的属性 如何在 PC 和触摸屏设备上实现此功能 Thanks scroll nav up scroll
  • CORS:为什么我的浏览器不发送 OPTIONS 预检请求?

    从我读到的内容来看CORS https en wikipedia org wiki Cross origin resource sharing 我理解它应该按如下方式工作 客户端的脚本尝试获取资源从服务器不同的起源 浏览器拦截这个请求并首先

随机推荐