2013-01-21 15 views
5

Sto provando a calcolare la posizione e l'altezza/larghezza di un elemento DOM tramite TypeScript/JQuery. Prima dattiloscritto ho semplicemente fatto qualcosa di simile:Come passare sopra un elemento usando 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"); 
      }); 
} 

dove idCRM è una sezione '' nel mio documento cshtml (ma potrebbe essere qualsiasi div ecc)

Ora sto cercando di spostare questo codice in TypeScript, ma che tipo mi aspetto che la funzione ActOnClick provenga da jQuery $ ("# idCRM")? Al momento scelgo 'Elemento' ma a) non espone larghezza, altezza eccetera b) la chiamata ad ActOnClick fallisce causata da $ ("# 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 
    }); 
} 

risposta

14

Se è necessario il codice a lavorare solo, si può sempre utilizzare il tipo di Any dattiloscritto, come:

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

tipografico chiude fondamentalmente su una variabile Any, e non emetterà alcun errori o avvertenze. Tuttavia, $("#idCRM") dovrebbe restituire un oggetto che implementa l'interfaccia JQuery, definito in jquery.d.ts, così si dovrebbe effettivamente utilizzare:

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

il offset(), width() e height() metodi sono definiti su tale interfaccia, e tornare Object, number e number, rispettivamente.

+0

grazie per quello, ma JQuery non sembra esporre la larghezza() ecc. – Marcel

+0

la mia versione (jquery-1.8.d.ts da [DefinitelyTyped] (https://github.com/borisyankov/DefinitelyTyped)) espone un metodo di larghezza – SWeko

+0

sì - hai ragione lo fa! - Grazie per quello – Marcel

Problemi correlati