2013-01-21 20 views
5

Próbuję ustalić położenie i wysokość/szerokość elementu DOM za pomocą TypeScript/JQuery. Przed maszynopis po prostu zrobił coś takiego:Jak przekazać element za pomocą TypeScript/jQuery

 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"); 
      }); 
} 

gdzie idCRM jest to „sekcja” w moim dokumencie cshtml (ale może to być dowolny div itp)

Teraz staram się przenieść ten kod w TypeScript, ale jakiego typu mogę się spodziewać po funkcji ActOnClick z poziomu $ jQuery ("# ​​idCRM")? Teraz wybieram "Element", ale a) nie eksponuje on szerokości, wysokości itp. Oraz b) wywołanie funkcji ActOnClick nie powiodło się z powodu $ ("# idCRM")!

/// <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 
    }); 
} 

Odpowiedz

14

Jeśli potrzebny kod po prostu pracować, zawsze można użyć typu Any maszynopis, jak:

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

Maszynopis w zasadzie zamyka się na zmiennej Any, a to nie będzie emitowała błędy lub ostrzeżenia. Jednak $("#idCRM") powinna zwracać obiekt, który implementuje interfejs JQuery, zdefiniowanego w jquery.d.ts, więc należy właściwie używać:

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

offset(), width() i height() metody są zdefiniowane w tym interfejsu, i wrócą Object, number i number, odpowiednio.

+0

dziękuję za to, ale JQuery nie wydaje się wystawiać szerokość() itp. – Marcel

+0

moja wersja (jquery-1.8.d.ts od [ZdecydowanieTyped] (https://github.com/borisyankov/DefinitelyTyped)) odsłania metoda szerokości – SWeko

+0

yep - masz rację! - Dziękuję za to – Marcel

Powiązane problemy