6

我正在尝试通过 TypeScript/JQuery 计算出 DOM 元素的位置和高度/宽度。在 TypeScript 之前,我只是做了这样的事情:

        function ActOnClick(itemClicked, loadPath) {
            //sample code
            var v1 = itemClicked.offset();
            var v2 = itemClicked.width();
            var v3 = itemClicked.height();

        };

        $(document).ready(function () {

            $("#idCRM").click(function () {
                ActOnClick($("#idCRM"), "/Widgets/GetCRM");
            });
}

其中 idCRM 是我的 cshtml 文档中的“部分”(但它可以是任何 div 等)

现在我正在尝试将此代码移动到 TypeScript 中,但是我希望 ActOnClick 函数中的什么类型来自 jQuery 的 $("#idCRM")?现在我选择“元素”,但 a) 它不显示宽度、高度等 b) 由 $("#idCRM")! 引起的 ActOnClick 调用失败!

/// <reference path="../../ScriptsTS/jquery.d.ts" />
function ActOnClick(itemClicked: Element, loadPath: string) {

    var v1 = itemClicked.offset();  <-- FAILS
    var v2 = itemClicked.width();   <-- FAILS
    var v3 = itemClicked.height();  <-- FAILS

};

$(document).ready(function () {

    $("#idCRM").click(function () {
        ActOnClick($("#idCRM"), "/Widgets/GetCRM");  <-- FAILS
    });
}
4

1 回答 1

16

如果您需要代码正常工作,您始终可以使用Anytypescript 类型,例如:

function ActOnClick(itemClicked: Any, loadPath: string) {
  var v1 = itemClicked.offset();
  var v2 = itemClicked.width();
  var v3 = itemClicked.height();
};

Typescript 基本上关闭了一个Any变量,它不会发出任何错误或警告。但是,$("#idCRM")应该返回一个实现JQuery接口的对象,定义在 中jquery.d.ts,所以你应该实际使用:

function ActOnClick(itemClicked: JQuery, loadPath: string) {
  var v1 = itemClicked.offset();
  var v2 = itemClicked.width();
  var v3 = itemClicked.height();
};

,和方法是在该接口上定义的,它们offset()分别返回,和。width()height()Objectnumbernumber

于 2013-01-21T14:38:51.733 回答