Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VisualStudio2008/2010中对jQuery闭包的Intellisense支持{_Javascript_Jquery_Visual Studio_Intellisense_Closures - Fatal编程技术网

Javascript VisualStudio2008/2010中对jQuery闭包的Intellisense支持{

Javascript VisualStudio2008/2010中对jQuery闭包的Intellisense支持{,javascript,jquery,visual-studio,intellisense,closures,Javascript,Jquery,Visual Studio,Intellisense,Closures,我正在尝试让Intellisense正确地为闭包工作。作为插件作者,我总是使用闭包为我的插件代码创建一个隔离的环境: (function($) { // code here })(jQuery); 但是这里的问题是Intellisense没有检测到函数执行过程中传递了jQuery。在上面的代码中添加$=jQuery可以解决问题,但这只是执行不佳,IMHO 这里的任何人在没有使用嵌入式ASP服务器标签(这是一个独立的JS文件)的情况下都能做到这一点?最好不包括修改现有代码,而不是一些奇怪的/

我正在尝试让Intellisense正确地为闭包工作。作为插件作者,我总是使用闭包为我的插件代码创建一个隔离的环境:

(function($) {
  // code here
})(jQuery);
但是这里的问题是Intellisense没有检测到函数执行过程中传递了jQuery。在上面的代码中添加$=jQuery可以解决问题,但这只是执行不佳,IMHO


这里的任何人在没有使用嵌入式ASP服务器标签(这是一个独立的JS文件)的情况下都能做到这一点?最好不包括修改现有代码,而不是一些奇怪的
//
-类似解决方案?

在您的帖子或评论中不清楚,但在.JS文件的顶部,您是否添加了:
//

到你的档案的顶端

在外部库中有更多关于intellisense的内容(不是特定于jQuery)

另外,这里还有另一个可能的解决方案,这就是您在
$=jQuery
中提到的解决方案吗

(function($) {  // private closure;  <% /*debug*/ if (false) { %> 
    $ = jQuery;
    // <% } /*end debug*/ %>
    $(function() {
        // do stuff
    });
})(jQuery);
(函数($){//私有闭包;
$=jQuery;
// 
$(函数(){
//做事
});
})(jQuery);

可在此处找到:

但在安装修补程序之前,请确保您的系统中已安装SP1。

我很惊讶这在VS2010中不起作用(我认为您无法在VS2008中使其起作用)

您可以尝试将xml文档注释添加到开始闭包中,以定义参数类型。如下所示:

///


(我不知道jquery对象的类名是什么——或者是否有可用的类名)。

如果您正在查看Visual Studio 2010的jquery插件开发IDE,您已经做出了正确的选择。以下是安装的详细信息:

  • 在项目的同一目录中下载jquery和相应的jquery.vsdoc。您可以从
    http://www.asp.net/ajaxlibrary/cdn.ashx
    。以下是上面CDN中最新jQuery链接的链接:

    • http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js
    • http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js
    • http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1-vsdoc.js
    在我的开发环境中,我使用重命名为jquery.js的未压缩jquery文件(删除文件名中的版本信息[-1.7.1],并记住也要从vsdoc文件名中删除版本信息)

  • 创建插件文件,其第一行包含该行

    /// <reference path="/path/to/jquery.js">
    
    //
    
  • 使用闭包创建插件代码。以下是插件的完整框架:

    /// <reference path="jquery.js" />
    
    (function ($) {
        /// <param name="$" type="jQuery" />
        jQuery.fn.gallery = function () {
            return this.each(function () {
            // your code here
            });
        };
    })(jQuery);
    
    //
    (函数($){
    /// 
    jQuery.fn.gallery=函数(){
    返回此。每个(函数(){
    //你的代码在这里
    });
    };
    })(jQuery);
    
  • 记住使用
    //
    作为插件结束的第一行,正如我在上面的代码中所演示的那样。在VisualStudio2010SP1中,这一切都适用于我


  • 访问并

    是的,我已经添加了引用,但它不适用于解决这个特定问题(jQuery被引用很好,但是带有闭包的引用不起作用)。这正是我试图不使用的条件服务器端语句的类型,因为我使用的是静态Javascript文件,而不是ASPX/ASCX页面的代码。似乎这种特定情况是Intellisense引擎本身的一个限制。它无法识别函数是以jQuery作为参数传入的。这个问题,however无法解决静态Javascript文件的问题,但只能解决已处理文件的问题,如之前安装的ASPX和ASCX.SP1。正如我所说,Intellisense可以工作,但不适用于此特定情况。使用VS2010为我工作!将类型设置为“jQuery”。第3步非常神奇!感谢您分享这一点。使用Visual Studio 2012 beta对我非常有用。