2013-01-21 10 views
5

Ich versuche, die Position und die Höhe/Breite eines DOM-Elements durch TypeScript/JQuery zu erarbeiten. Vor Typoskript Ich habe einfach so etwas wie diese:Wie übergebe ich ein Element mit 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"); 
      }); 
} 

wo idCRM einen ‚Abschnitt‘ ist in meinem cshtml Dokument (aber es könnte jede div usw. sein)

Jetzt versuche ich, diesen Code zu bewegen in TypeScript, aber welchen Typ erwarte ich in der ActOnClick-Funktion von der jQuery's $ ("# idCRM")? Im Moment wähle ich "Element", aber a) es gibt keine Breite, Höhe usw. aus und b) der ActOnClick-Aufruf schlägt fehl, verursacht durch $ ("# 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 
    }); 
} 

Antwort

14

Wenn Sie den Code brauchen nur zu arbeiten, können Sie immer den Any Typ Typoskript, wie:

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

Typoskript im Grunde auf einer Any Variable hält den Mund, und es wird jede nicht ausstellen Fehler oder Warnungen. Allerdings sollte $("#idCRM") ein Objekt zurückgeben, das die JQuery-Schnittstelle implementiert, in jquery.d.ts definiert, so sollten Sie tatsächlich nutzen:

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

die offset(), width() und height() Methoden an dieser Schnittstelle definiert sind, und sie kehren Object, number und number, jeweils.

+0

danke dafür, aber JQuery scheint nicht die Breite() etc .. – Marcel

+0

meine Version (jquery-1.8.d.ts aus [DefinitelyTyped] (https://github.com/borisyankov/DefinitelyTyped)) verfügbar macht eine Breite Methode – SWeko

+0

yep - du hast recht es tut! - Dank dafür – Marcel

Verwandte Themen