/// <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
注释,但是,唉,这对我来说都不起作用。
答案 0 :(得分: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);
你的函数无法知道你传入的内容的定义。你的函数可以解决这个问题并确保你的参数有效。
函数的定义和函数的执行是两个不同的东西。你不会在函数定义中获得函数参数的intellisense。
答案 1 :(得分: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);