2012-04-19 17 views
5

Tengo un javascript que controla un div oculto. Ahora funciona en la mayoría de las páginas, pero en otras páginas con otros javascripts no funciona ... ¿Está mi js mal escrito?

$(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 informa lo siguiente en la consola de errores:

Marca de tiempo: 4/18/2012 9:08:21 PM error: $ ("# user-desplegable-toggle") es nulo

Respuesta

9

La función $en jQuery nunca se volverá null. Es probable que sea diferente no jQuery$ en uso. (Is empleándose cualquier material ASP.NET o prototype.js u otra biblioteca? Una función personalizada $ declaró más tarde?)

Sé que $ es en sí misma no null debido a que la excepción sería diferente, como : "$ no es una función". En este caso, el navegador dice como resultado de la expresión ($(...)) es null, lo que me lleva a la conclusión anterior.

Probar:

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

O, mejor aún, ya que sólo se basa en window.jQuery y no window.$:

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

Y, si eso funciona, entonces es que $ está siendo Demolí antes el evento "listo" (pero después de $(...).ready). Por supuesto, es posible (pero no muy probable) que el $ es ya no jQuery en este punto ...

Para ver si es $ jQuery (utilizar la consola Web Developer o Firebug):

  • $ === jQuery general debería ser cierto, pero puede que no sea en función de noConflict y tal
  • $.fn.jquery y $().jquery debe tanto resultado en la versión de jQuery como una cadena
  • $ (simplemente especificando la función en la consola va a "mostrar la fuente")

Como un aparte, lo haría guión el cuerpo de la función (por ejemplo, en la devolución de llamada "lista") para ver dónde comienza/termina más claramente.

Happy coding.

+0

Gracias por la información. Nunca pensé que podría hacer algo de eso con Firebug. El javascript que está causando que el mío se rompa se encuentra aquí: http://www.leaguejudgement.com/forum/public/min/index.php?ipbv=31005&g=js y como puede ver, es mucho. No soy un experto en js, por lo que podría intentar encontrar un script js más pequeño para convertir bbcode en mi formulario. – PaulELI

+1

@PaulELI Hay algo sospechoso: 'function $ (element) {...}' en ese código, que anula '$' (creo que está en el alcance 'window', pero es difícil de decir con la minimización) y parece que podría estar relacionado con el uso de la biblioteca "Prototype.js". De todos modos, ¿el enfoque 'function ($)' hace el truco? Si no es así, ¿se soluciona el problema al utilizar 'jQuery' y no' $ '? Esto debería ser bastante "seguro": 'jQuery (función ($) {/ * material original que usa $ * /})' y generalmente inmune a otras bibliotecas. –

+1

Ok, lo hice funcionar con lo que dijiste ... No entendí bien tu publicación inicial y la estaba llevando en una dirección diferente, pero tu publicación original tiene mucho sentido ahora. Muchas gracias, lo arregló. Esto es bueno saberlo para futuros esfuerzos js. El prototipo o la biblioteca que está utilizando el editor de texto enriquecido parece ser el culpable de algunos problemas más, por lo que probablemente continuaré reemplazándolo. – PaulELI

1

Lo primero que verificaría es asegurarme de que jQuery esté incluido en todas las páginas. Supongo que este es el caso, ya que no tenía problema con el bit $ (documento) .pero nunca se sabe.

Tome un vistazo a este post para más información: jQuery $("#field") is null?

0

Debe agregar su guión jquery/línea de incluir.

También mencionas "otras JS" en la misma página ... debes comprobar que no está cargando una versión diferente de JQuery que la que estás utilizando - anulando tu versión importada de tu biblioteca .....

Cuestiones relacionadas