2
/// <reference path="jquery-1.5.vsdoc.js" />
// IntelliSense works here.

function ($, window, document, undefined) { /// <param name="$" type="jQuery" />
    // IntelliSense  does not work here.

}(jQuery, this, document);

Visual Studio 2008 の回避策はありますか? SP1 修正プログラムが適用されているため、IntelliSense は非競合ラッパーの外部で動作しますが、内部ではブエノは動作しません。注釈を追加するように言っている人もいますparamが、残念ながら、それは私にとってもうまくいきません。

4

2 に答える 2

3

これは、関数の定義が、jQuery が内部でドルを意味することを認識していないためです。たとえば、次のようにします。

var wrapper = function($, window, document, undefined) {
    // this function doesn't know what dollar is
};

// it could be called like this:
wrapper(jQuery, window, document, undefined);

// or like this:
wrapper(1, 2, 3, 4);

関数は、渡されたものの定義を知ることができません。それを理解し、引数が有効であることを確認するのは関数次第です。

関数の定義と関数の実行は、2 つの別個のものです。関数定義内の関数引数のインテリセンスは得られません。

于 2011-03-29T17:34:18.593 に答える
1

これは、NuGet パッケージ (現在は 1.6.1) に含まれている jQuery IntelliSense ドキュメントを使用して、Visual Studio 2010 で機能します。ハックが 1 つありますが、これは jQuery インスタンスの完全な IntelliSense を備えた jQuery プラグインの例です。

/// <reference path="/Scripts/jquery-1.6.1.js" />
(function ($) {
    /// <param name="$" type="jQuery">
    ///     Pass me jQuery
    /// </param>

    // IntelliSense works here.
    $(".intellisense_work_here").add(".test", "<strong>it works<strong>");

    // Setting this locally enables IntelliSense  to work in the .each below.
    var $ = $;

    $.fn.makeThingsAwesomePlugin = function (options) {

        var defaults = {
            awesomeness: "really_awesome"
        };
        var options = $.extend(defaults, options);

        return this.each(function () {

            // intellisense work here    
            $(".someting_lame").addClass(options.awesomeness);
        });
    };
})(jQuery);
于 2011-05-20T17:19:01.657 に答える