如何停止Resharper在Javascript中自动将$补全为'$t'?

5
当我调用jQuery方法如jQuery.ajax时,我使用$.ajax。Resharper从jqGrid的代码中捕获了某些内容,使得每次我键入$时它会自动补充$t,这让jQuery的编码变得非常缓慢——有人知道我如何禁用它吗?
更新:
我知道可以通过工具-选项-Resharper-常规-暂停完全挂起Resharper,但我真的只想让它别再管我的JavaScript了;(

你能否在问题的文本中包含你使用的Resharper、jQuery、jqGrid和jQuery UI的版本? - Oleg
我使用 ReSharper 6.0 (6.0.2202.688)、jqGrid 4.2.0、jQuery UI 1.8.16 和 jQuery 1.6.4 或 1.7RC1,但无法重现所描述的问题。只有 $ 是已知的,没有 $t - Oleg
我得到的是$e而不是$t。Resharper从jquery.corners.js中获取它... Resharper还从jQuery插件中获取其他jQuery方法,而不是jQuery本身。我希望能够告诉Resharper给予jQuery.js最高优先级或类似的东西。 - Matt Casto
2个回答

1

我猜在你的代码或jqGrid的代码中定义了全局变量$t。 jqGrid的代码有很多类似的地方

methodName: function (methodParameters) {
    return this.each(function () {
        var $t = this, ...
        ...
    });
}

所以有很多地方定义了本地变量$t。在其他方法中,您会看到var t = thisvar ts = thisvar self = this等等。

所以我猜想,在您使用的jqGrid代码中的某个位置出现了复制和粘贴错误:从函数中复制了代码,在另一个方法中定义了var $t = this,并且使用了另一个变量名来保存this。因此,$t将解释为全局变量。

我建议您查找您代码中$t的定义。只需按下F12键或使用Resharper的其他可能性查找全局$t变量的定义。


1
更改建议的方法只是治疗症状,而不是治愈疾病。如果我纠正Resharper建议的$e,它只会在我的解决方案中引用的任意数量的其他jQuery插件中找到另一个以$开头的全局变量。 - Matt Casto
@MattCasto:我在答案中只写了我的假设,因为我在 ReSharper 6 和 jqGrid 的版本上无法复现这个问题。所以我没有全局$t$e变量定义的地方。你可以提供一个演示来复现你的问题吗?你使用的 jqGrid、jQuery 和 jQuery UI 版本是哪个?你还使用哪些其他插件?你使用的是jquery.jqGrid.src.js还是jquery.jqGrid.min.js - Oleg
我能够重现类似的行为,使用jQuery corners 0.3中的$e变量。我认为你可以通过在解决方案中的任何JS文件中创建以美元符号$开头的全局变量来获得这样的行为,Resharper会捕捉到它。但是,我自己还没有测试过这个方法。 - Matt Casto
@MattCasto:你没有回答我在上一个评论中的问题。你使用哪个版本的jqGrid、jQuery和jQuery UI?你使用jquery.jqGrid.src.js还是jquery.jqGrid.min.js?你使用哪个版本的ReSharper?我尝试了ReSharper 6.0和6.1,没有任何问题。我无法重现这个问题,因为如果我在顶层输入“$”,上下文菜单只会建议“$(在jQuery....js中)”。 - Oleg
我正在使用ReSharper 6.1。我的特定网站使用了jQuery 1.5和jQuery UI 1.8.9自定义版本,但它没有被引用到我的解决方案中,所以我不知道ReSharper是否会检测到它。我不使用jqGrid。 - Matt Casto
@MattCasto:如果你在 $e 上按 F12,应该会显示 $e 的定义。你看到了什么?如果这没有帮助,你可以尝试在 Visual Studio 中创建一个新的空 Web 项目。然后包含 jQuery 1.5(非压缩版本),并尝试重现 $e 的问题。然后,您可以添加另一个 JavaScript 文件,并再次验证 $e 的问题是否存在,直到您遇到问题为止。 - Oleg

1
缺乏真正的解决方案,更好的解决方法是在您的解决方案中的common.js文件中定义$函数。
$ = $;

这并不能解决 $t 或者其他全局方法的问题(在我的情况下是 $e),但它应该会将你的 common.js 文件中的 $ 作为首选建议。

我比较喜欢这种解决方法,而不是修改有问题的 jQuery 插件源文件,因为我不想每次更新插件时都要重新应用此修改。此外,我也不必担心通过更改变量名称或消除全局变量可能会破坏任何东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接