3

次のコードがあります。

// Populate the title of the selects on change and trigger a change
$('#modal .update-title')
    .change(function () {
        var $select = $(this),
        match = null,
        matchRow = null,
        title = $('option:selected', this).prop('title');

typescript では、これは title の値を bool に設定します。次に、次のように使用しようとすると、エラーが発生します。

$("#modal_Title_" + matchRow).val(title);

これは JQuery 定義の別の問題ですか、それとも私が間違っているのでしょうか? 定義ファイルを確認すると、次のように表示されます。

prop(propertyName: string): bool;

これは、JQuery ドキュメントと一致していないようです。

4

3 に答える 3

3

jQuery のドキュメントは正しくありません。型定義ファイルも間違っています。

ほとんどのプロパティは文字列ですが、一部は数値 (など) で.selectedIndex、一部はブール値 (.checkedなど) であり、すべてを文字列に変換するわけではあり$.fn.prop() ません。

正しい定義は次のとおりです。

prop(propertyName: string): any;

これを修正するための作業項目が TypeScript サイトに既にリストされています。

于 2012-11-18T21:33:37.190 に答える
2

@Alnitak が指摘したように、戻り値は「any」である必要があります。

TypeScriptのファイルからのフォークであるDefiniteTypedでjQuery定義ファイルを修正しましたが、多数の修正が含まれています。

于 2012-11-19T15:42:03.540 に答える
0

プロップが返すjQueryドキュメントの状態:

  • 1 つの引数で呼び出された場合の文字列

  • 2 つの引数で呼び出された場合の jQuery オブジェクト

http://api.jquery.com/prop/

したがって、これによれば、jquery.d.ts が正しくない可能性があります。

プロジェクトで jquery.d.ts を正しく編集し、typescript.codeplex.com でバグを報告することをお勧めします。

prop(propertyName: string): string;
于 2012-11-18T21:25:39.800 に答える