2011-10-31 10 views
5

Quando chiamo i metodi jQuery come jQuery.ajax uso $ .ajax. Resharper sta rilevando qualcosa dal codice jqGrid che lo fa voler completare automaticamente $ t ogni volta che digito $. La sua codifica jQuery è veramente lenta - qualcuno sa come posso disabilitarlo?

UPDATE

So che la sua possibile sospendere totalmente ReSharper da Strumenti -> Opzioni -> ReSharper -> Generale -> Sospendi, ma voglio davvero solo che lasciano in pace la mia javscript; (

+0

Potresti includere nel testo della tua domanda quali versioni di Resharper, jQuery, jqGrid e jQuery UI usi? – Oleg

+0

Uso ReSharper 6.0 (6.0.2202.688), jqGrid 4.2.0, jQuery UI 1.8.16 e jQuery 1.6.4 o 1.7RC1 e non riesco a riprodurre il problema descritto. Solo '$' è noto e no '$ t'. – Oleg

+0

Ottengo '$ e' invece di' $ t'. Resharper lo preleva da jquery.corners.js ... Anche il resharper acquisisce altri metodi jQuery dai plugin jQuery invece di jQuery. Mi piacerebbe poter dire a Resharper di dare la massima priorità a jQuery.js o qualcosa di simile. –

risposta

1

suppongo che da qualche parte nel codice o nel codice delle jqGrid le globali variabili $t sono definiti. il codice di jqGrid ha molti luoghi come

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

Quindi ci sono molti posti dove variabile locale$t sono definiti. All'interno di altri metodi vedrai var t = this o var ts = this o var self = this e così via.

quindi suppongo, che da qualche parte nel codice di jqGrid che ci usa sono tazza & errore incollato: uno copiato il codice dalla funzione avere var $t = this definita dell'altro metodo in cui uno utilizzato un altro nome di variabile per salvare this. Quindi il $t sarà interpretato come variabile globale.

Vi consiglio di trovare la definizione di $t nel codice. Basta premere F12 su $t o utilizzare un'altra possibilità di Resharper per trovare dove sono definite la variabile globale$t.

+1

La modifica del metodo suggerito cura il sintomo, non la malattia. Se correggo il '$ e' suggerito dal Resharper, trova semplicemente un'altra variabile globale che inizia con' $ 'da qualsiasi numero di altri plugin jQuery a cui si fa riferimento nella mia soluzione. –

+0

@MattCasto: Ho scritto nella risposta solo le mie supposizioni perché * non posso riprodurre il problema * sulla mia versione di ReSharper 6 e jqGrid. Quindi non ho variabili globali '$ t' o' $ e' definite da qualche parte. Potresti fornire una demo che riproduca il tuo problema? Quale versione di jqGrid, jQuery e jQuery UI usi? Quali altri plugin usi? Usi 'jquery.jqGrid.src.js' o' jquery.jqGrid.min.js'? – Oleg

+0

Sono stato in grado di riprodurre un comportamento simile, con la variabile '$ e', utilizzando gli angoli di jQuery 0.3. Penso che potresti essere in grado di ottenere un comportamento del genere solo creando una variabile globale che inizi con il simbolo di dollaro '$' in qualsiasi file JS nella soluzione, e Resharper lo raccoglierà. Tuttavia, non l'ho testato personalmente. –

1

In mancanza di una vera soluzione, una soluzione migliore sarebbe definire la funzione $ in un file common.js nella soluzione.

$ = $; 

Questo non risolve il problema con l'altro metodo globale $t o qualsiasi altra cosa che si vede ($e nel mio caso), ma dovrebbe suggerire la $ dal file common.js come il suggerimento superiore.

Mi piace questo lavoro un po 'più che modificare i file sorgente del plugin jQuery offendente perché non voglio dover riapplicare questa modifica ogni volta che aggiorno i miei plugin. Inoltre, non devo preoccuparmi di rompere qualcosa cambiando i nomi delle variabili o eliminando le variabili globali.

Problemi correlati