Pourquoi ne pas VSDoc IntelliSense de travail à l'intérieur de jQuery non-conflit wrapper?
-
14-11-2019 - |
Question
/// <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);
Est-il une solution pour Visual Studio 2008?Le service pack 1 correctif a été appliqué et c'est la raison de l'IntelliSense travaille en dehors de l'absence de conflit wrapper mais, à l'intérieur, pas de bueno.Certains ont dit d'ajouter de la param
annotation mais, hélas, cela ne fonctionne pas pour moi.
La solution
C'est parce que la définition de la fonction ne sait pas que jQuery moyen du dollar à l'intérieur de lui.Prenez cet exemple:
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);
Votre fonction ne peut pas connaître la définition de ce que vous êtes de passage dans.C'est à votre fonction pour comprendre cela et assurez-vous que vos arguments sont valables.
La définition de la fonction et de l'exécution de la fonction sont deux choses distinctes.Vous n'obtiendrez pas d'intellisense pour les arguments d'une fonction à l'intérieur de la définition de la fonction.
Autres conseils
Cela fonctionne pour moi dans Visual Studio 2010 avec jQuery IntelliSense documentation inclus dans le package NuGet (actuellement 1.6.1).Il y a un hack, mais c'est un exemple de plugin jQuery avec plein IntelliSense de l'jQuery exemple.
/// <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);