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 在无冲突包装器之外工作但在内部没有 bueno 的原因。有人说要添加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);

您的函数无法知道您传入的内容的定义。由您的函数来确定并确保您的参数有效。

函数的定义和函数的执行是两件不同的事情。您不会在函数定义中获得函数参数的智能感知。

于 2011-03-29T17:34:18.593 回答
1

这适用于我在 Visual Studio 2010 中使用 NuGet 包中包含的 jQuery IntelliSense 文档(当前为 1.6.1)。有一个 hack,但这是一个示例 jQuery 插件,具有 jQuery 实例的完整 IntelliSense。

/// <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 回答