Non ho mai visto prima questo qualcuno può darmi qualche suggerimento?jQuery stopPropagation()?
Sto creando un'app Web per creare note come postarle su una lavagna. Al momento il pulsante spawn genera le note, ma voglio farlo in modo che l'utente possa fare clic in qualsiasi punto della tela (lavagna) e genererà una nuova nota in quella posizione.
ecco il codice per questo: -
$("#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();
});
Il problema sorge quando l'utente clicca su una delle note, perché le note vengono clonati nella tela ogni volta che l'utente fa clic sulla nota la sua creazione un'altra nota. Voglio interrompere questo comportamento e creare SOLO una nota quando un utente fa clic su un'area vuota. Ho provato a prevenire Defauly, stopPropagation e stopImmediate ... ma nessuno di loro sembra avere alcuna influenza.
Ho anche provato su altre azioni come il clic della nota ma non riesco a trovare quello giusto nel posto giusto? o sto andando su questo completamente nel modo sbagliato?
esempio qui:
http://www.kryptonite-dove.com/sandbox/animate
UPDATE:
$('#canvas').on('click', '.note', function(e) {
e.stopPropagation();
});
Questo ha risolto il problema delle note zampillante tuttavia ora impedisce qualunque azione click sulla classe nota, io sono in acque inesplorate qui! apprezzerebbe qualsiasi suggerimento su come riportare le azioni dei clic per il titolo e il testo della nota :)
Brillante grazie !! ottima spiegazione, codice condensato e JS fiddle ti hanno conquistato la vittoria :) – KryptoniteDove
Splendid! se (e.target! = this) return; lavori! – saike