2013-01-21 14 views
5

Bir DOM öğesinin konumunu ve yüksekliğini/genişliğini TypeScript/JQuery aracılığıyla yapmaya çalışıyorum. typescript Önce ben sadece böyle bir şey yaptı:TypeScript/jQuery kullanarak bir öğe üzerinden nasıl geçilir

idCRM (ama herhangi bir div vb olabilir)

Şimdi bu kodu taşımak için çalışıyorum benim cshtml belgesinde bir 'bölümüne' olduğunu

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

TypeScript içine ancak ActOnClick fonksiyonunda jQuery'nin $ ("# idCRM") 'dan hangi tipte olmasını beklerim? Şu anda 'Eleman' seçeneğini seçiyorum ama a) genişlik, yükseklik vb. Göstermiyor ve b) ActOnClick çağrısının $ ("# idCRM") neden olduğu başarısız!

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

typescript temelde bir Any değişkeni çenesini kapatır ve herhangi sorunu olmaz: Sadece çalışmak kodu gerekiyorsa

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

cevap

14

, her zaman olduğu gibi Any typescript türünü kullanabilirsiniz hatalar veya uyarılar. Ancak $("#idCRM")jquery.d.ts tanımlanan JQuery arabirimi uygulayan bir nesne, dönmelidir, bu yüzden aslında kullanmalısınız:

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

offset(), width() ve height() yöntemleri bu arabirimde tanımlanır ve bunlar Object, number dönmek ve Sırasıyla number.

+0

bunun için teşekkürler, ancak JQuery width() vb. Göstermiyor gibi görünmüyor. – Marcel

+0

benim sürümü ([DefinitelyTyped] 'den (jquery-1.8.d.ts) (https://github.com/borisyankov/DefinitelyTyped)) Bir genişlik metodu – SWeko

+0

evet - haklısınız! - bunun için teşekkürler – Marcel

İlgili konular