Nunca me encuentro con esto antes ¿alguien me puede dar alguna indicación?jQuery stopPropagation()?
Estoy creando una aplicación web para tomar notas, como publicar notas en una pizarra. En este momento, el botón spawn generará notas, pero quiero hacerlo de modo que el usuario pueda hacer clic en cualquier parte del lienzo (pizarra) y generará una nueva nota en esa posición.
Este es el código para que: -
$("#canvas").bind('click', function(e){
// Calculate offset for width, put box to the left top corner of the mouse click.
var x = e.pageX + "px";
var y = e.pageY + "px";
$("#note").clone().insertBefore("#insertAfter").attr("id", "note" + noteID).show();
$("#note" + noteID).children(".title").text("Note " + noteID);
$("#note" + noteID).css({left:x, top:y, "z-index" : zindex});
noteID++;
zindex++;
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
});
El problema surge cuando el usuario hace clic en una de las notas, porque las notas se clonan en el lienzo cada vez que el usuario hace clic en la nota de su creación otra nota. Quiero detener este comportamiento y SÓLO crear una nota cuando un usuario hace clic en un área de lienzo en blanco. He intentado prevenirDefantly, stopPropagation y stopImmediate ... pero ninguno de ellos parece tener ninguna influencia.
También los he probado en otras acciones, como el clic de la nota, pero parece que no puede encontrar la correcta en el lugar correcto. o estoy yendo sobre esto completamente de la manera incorrecta?
ejemplo aquí:
http://www.kryptonite-dove.com/sandbox/animate
ACTUALIZACIÓN:
$('#canvas').on('click', '.note', function(e) {
e.stopPropagation();
});
Esto resolvió el problema de las notas burbujeando sin embargo, ahora impide cualquier acción clic en la clase de nota, estoy en aguas inexploradas aquí! agradecería cualquier sugerencia sobre cómo hacer que las acciones de clic vuelvan a funcionar para el título y el texto de la nota :)
Brillante gracias! gran explicación, código condensado y JS violín te dieron la victoria :) – KryptoniteDove
Splendid! if (e.target! = this) return; ¡trabajos! – saike