una tipos pasar parametros para llamar google funciones funcion desde consola comandos closure chrome javascript jquery firefox

tipos - pasar parametros a una funcion javascript desde html



¿Por qué la llamada a esta función JQuery falla en Firefox? (4)

Tengo la siguiente línea de código en un enlace en mi página web:

<a href="javascript:$(''#comment_form'').toggle(''normal'')" title="Comment on this post">

Esto produce un enlace que debe abrir una forma oculta. Funciona en Safari, pero en Firefox, acabo de obtener una página casi vacía con nada más que el siguiente texto:

[object Object]

Estoy seguro de que esto tiene algo que ver con el valor devuelto por la función JQuery, pero no estoy seguro de cómo arreglar la llamada a la función de JavaScript para que también funcione en Firefox.


¿Has intentado mover lo que está en href para hacer clic? En general, debe evitar javascript en el atributo href.


Por el amor de...

<script type=''text/javascript''> jQuery(function($){ # Document ready, access $ as jQuery in this scope $("a#comment").click(function(){ # bind a click event on the A like with ID=''comment'' $(''#comment_form'').toggleClass(''normal''); # Toggle the class on the ID comment form return false; # stop the href from being followed. }); }); </script> .... <a id="comment" href="/you_need_javascript_sorry.html" title="Comment on this post"> [Comment] </a>

Por favor, no incruste JavaScript como lo hizo en el HTML.

Si incrusta JavaScript en HTML así, usted:

  1. Haz un código desordenado.
  2. Tiene problemas extraños como lo hizo con los hacks para evitarlo
  3. Los usuarios que intenten hacer clic en los enlaces del medio se enviarán a ninguna parte.
  4. El mantenimiento de la parte ejecutable de su código intercalado en los enlaces de página terminará en un error.
  5. No degradar con gracia cuando los usuarios no tienen javascript
  6. Se vuelve problemático cuando comienza a necesitar hacer cosas como cotizaciones de la tienda de más de 2 capas de profundidad.

Tratar:

<a href="javascript:void($(''#comment_form'').toggle(''normal''))" title="Comment on this post">

Contar con la secuencia de comandos dentro de un void() evitará que el navegador muestre el resultado de la ejecución.

Actualizar

Respondí directamente la pregunta original, con la solución que requeriría la menor cantidad de esfuerzo. Como se menciona en algunas de las otras respuestas aquí, personalmente mantendría mi marcado y JavaScript separados y agregaría dinámicamente un controlador onclick lugar de incrustar el script dentro del atributo href .


<a href="http://full-url-to-directory/page#comment_form" onclick="$(''#comment_form'').toggle(''normal'');return false;" title="Comment on this post">

Aunque deberá hacer algo en el servidor para que cuando obtenga una referencia al elemento comment_form a través de una solicitud, el valor predeterminado sea que esté visible. Esto permitirá que (esta parte de) su página funcione sin javascript habilitado.