Estoy obteniendo resultados inesperados con jQuery tratando de establecer el método "clic" de un div. Por favor, consulte this jsfiddle. Asegúrese de abrir la ventana de la consola. Haga clic en la palabra varias veces y vea la salida de la consola. La función de clic se llama varias veces cuando solo se debe llamar una vez.jquery .click llamado varias veces
El código comentado al final funciona bien. ¿Estoy haciendo algo mal? Soy nuevo en jQuery.
Aquí está el código:
function toggleDiv(status)
{
console.log("toggleDiv(" + status + ")");
if (status) {
$("#test").html("Goodbye");
}
else {
$("#test").html("Hello");
}
$("#test").click(function() {
toggleDiv(!status);
});
// Non-jquery method works fine....
//document.getElementById("test").onclick = function() {
// toggleDiv(!status);
//}
}
Actualización: Parece que hay un montón de maneras de pelar este gato. El verdadero problema aquí fue que no comprendí que las funciones de "clic" de jQuery ADMITEN otro controlador. Pensé que REEMPLAZÓ el controlador actual.
Gracias. No estoy familiarizado con el atributo "estado de datos", pero se ajusta a mis necesidades. Sin embargo, tenga en cuenta que para que su código funcione como alternar, necesita agregar "$ (this) .data ('status', true);" a otra declaración. –
Si solo desea cambiar ese texto, debe echar un vistazo a mi respuesta. No necesita usar .data() en absoluto – kannix
¿Por qué mezcla $ ("# test") y $ (esto)? – kannix