2011-10-31 67 views
5

當我調用jQuery.ajax之類的jQuery方法時,我使用$ .ajax。 Resharper從jqGrid的代碼中挑選了一些東西,使得它在每次鍵入$時都想自動完成$ t。它使jQuery編碼非常慢 - 有誰知道我可以如何禁用它?

UPDATE

我知道它可以完全從工具暫停ReSharper的 - >選項 - > ReSharper的 - >常規 - >暫停,但我真的只是希望它獨自離開我javscript;(

+0

你可以在你的問題的文本中包括你使用哪個版本的Resharper,jQuery,jqGrid和jQuery UI嗎? – Oleg

+0

我使用ReSharper 6.0(6.0.2202.688),jqGrid 4.2.0,jQuery UI 1.8.16和jQuery 1.6.4或1.7RC1,並且無法重現所描述的問題。只有'$'是已知的,沒有'$ t'。 – Oleg

+0

我得到'$ e'而不是'$ t'。 Resharper從jquery.corners.js中選擇它... Resharper也從jQuery插件中選擇其他jQuery方法,而不是jQuery。我希望能夠告訴Resharper給予jQuery.js最高優先級,或類似的東西。 –

回答

1

我想在你的代碼或jqGrid的的代碼全球變量$t定義。jqGrid的的代碼有許多地方,如

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

所以有很多地方本地變量$t被定義。在其他方法裏面你會看到var t = thisvar ts = thisvar self = this等等。

,所以我想,在jqGrid的的,你有使用的代碼的某個地方是杯&粘貼錯誤:一個由具有其中一個用另一個變量名保存this其他方法定義var $t = this功能複製的代碼。所以$t將被解釋爲全局變量。

我建議您在代碼中找到$t的定義。只需在$t上按F12或使用Resharper的另一種可能性來查找定義變量的全局變量。

+1

改變建議的方法治療症狀,而不是疾病。如果我更正了Resharper建議的'$ e',它就會從我的解決方案中引用的任意數量的其他jQuery插件中找到另一個以'$'開頭的全局變量。 –

+0

@MattCasto:我在答案中只寫了我的假設,因爲我無法在我的ReSharper 6和jqGrid版本上重現問題*。所以我沒有定義全局的$ t或$ e變量。你能提供一個演示來重現你的問題嗎?您使用哪個版本的jqGrid,jQuery和jQuery UI?你使用哪些其他插件?你使用'jquery.jqGrid.src.js'還是'jquery.jqGrid.min.js'? – Oleg

+0

我能用'$ e'變量再現類似的行爲,使用jQuery corner 0.3。我想你可以通過在解決方案中的任何JS文件中創建一個以美元符號'$'開頭的全局變量來獲得這樣的行爲,並且Resharper會選擇它。但是,我自己沒有測試過這個。 –

1

由於缺乏真正的解決方案,更好的解決方法是在解決方案中的common.js文件中定義$函數。

$ = $; 

這不跟你看到(在我的情況$e)的$t或任何其他全局方法解決這個問題,但它應該從你的common.js文件上建議建議$

我喜歡這項工作,而不是修改違規的jQuery插件源文件,因爲我不想每次更新我的插件時都需要重新應用此修改。另外,我不必擔心可能會通過更改變量名稱或消除全局變量來破壞任何內容。

相關問題