2012-04-19 13 views
5

Ho qualche javascript che controlla un div nascosto. Ora funziona sulla maggior parte delle pagine, ma su altre pagine con altri javascript non funziona ... I miei j sono scritti male?

$(document).ready(function() { 
$("#user-dropdown-toggle").live ('click', function() { 
    $("#left-user-bar").addClass("open"); 
    $("#user-dropdown-toggle").addClass("league-judgement"); 
    $("body").addClass("league-judgement"); 
}); 
$(".league-judgement").live('click', function() { 
    $("#left-user-bar").removeClass("open"); 
    $("#user-dropdown-toggle").removeClass("league-judgement"); 
    $("body").removeClass("league-judgement"); 
}); 
}); 

Firefox sta riportando il seguente nella console di errore:

Timestamp: 2012/04/18 09:08:21 Errore: $ ("# user-discesa-toggle") è nullo

risposta

9

La funzione di $in jQuery non potrà mai tornare null. Quindi è probabile che sia un altro non jQuery$ in uso. (C'è qualche roba ASP.NET o prototype.js o altra libreria in uso? Una funzione personalizzata $ dichiarato più tardi?)

So che è di per sé $nonnull perché l'eccezione sarebbe stato diverso, come ad esempio : "$ non è una funzione". In questo caso il browser sta dicendo il risultato di l'espressione ($(...)) è null, che mi porta alla conclusione di cui sopra.

Prova:

$(document).ready(function($) { // <-- note $ there 
    ... 
}); 

O, meglio ancora, in quanto si basa solo su window.jQuery e non window.$:

jQuery(function($) { // <-- note $ there 
    ... 
}); 

E, se funziona, allora è che $ è essere stata colpita prima l'evento "pronto" (ma dopo $(...).ready). Naturalmente, è possibile (ma non molto probabile) che il $ è già non jQuery, a questo punto ...

per vedere se è $ jQuery (utilizzare la console Web Developer o Firebug):

  • $ === jQuery dovrebbe generalmente essere vero, ma non potrebbe essere a seconda noConflict e tale
  • $.fn.jquery e $().jquery dovrebbero entrambi risultato nella versione jQuery come una stringa
  • $ (solo specificando la funzione della consolle si "visualizzare l'origine")

Per inciso, avrei trattino del corpo della funzione (ad esempio nel callback "pronto") per vedere dove inizia/finisce più chiaramente.

Felice codifica.

+0

Grazie per l'informazione. Non ho mai saputo che avrei potuto fare un po 'di quello con Firebug. Il javascript che sta causando la rottura del mio si trova qui: http://www.leaguejudgement.com/forum/public/min/index.php?ipbv=31005&g=js e come puoi vedere, è molto. Non sono un esperto di js, quindi potrei provare a trovare uno script js più piccolo per convertire bbcode nel mio modulo. – PaulELI

+1

@PaulELI C'è questa cosa sospetta: 'function $ (element) {...}' in quel codice, che sovrascrive '$' (penso che sia nella portata 'window', ma difficile da dire con la minimizzazione) e sembra che potrebbe essere correlato all'uso della libreria "Prototype.js". Ad ogni modo, l'approccio 'function ($)' fa il trucco? Altrimenti, usa 'jQuery' e non' $ 'risolve il problema? Questo dovrebbe essere abbastanza "sicuro": 'jQuery (function ($) {/ * roba originale che usa $ * /})' e generalmente immune da altre librerie. –

+1

Ok ho capito che funziona con quello che hai detto ... Non ho capito bene il tuo post iniziale e stavo prendendo una direzione diversa, ma il tuo post originale ha molto senso ora. Grazie mille, l'ha risolto. Questo è utile sapere per gli sforzi futuri di js. Il prototipo o qualsiasi libreria utilizzata dall'editor Rich Text sembra essere un colpevole in alcuni altri problemi, quindi probabilmente andrò avanti e la sostituirò. – PaulELI

1

La prima cosa da controllare è assicurarsi che jQuery sia incluso in tutte le pagine. Presumo che questo è il caso dal momento che non ha avuto problemi con il $ (document) .ready bit ma non si sa mai.

Date un'occhiata a questo post per maggiori informazioni: jQuery $("#field") is null?

0

È necessario aggiungere lo script jquery/include line.

Inoltre si menziona "altro JS" nella stessa pagina .. si dovrebbe verificare che non stia caricando una versione diversa di JQuery rispetto a quella che si sta utilizzando - sovrascrivendo la versione importata della libreria ...

Problemi correlati