Никогда не сталкивайтесь с этим, прежде чем кто-нибудь может дать мне какие-нибудь указания?jQuery stopPropagation()?
Я создаю веб-приложение для создания заметок, как заметки на доске. В настоящий момент кнопка spawn будет создавать ноты, но я хочу сделать так, чтобы пользователь мог щелкнуть в любом месте холста (доски), и в этом месте появится новая заметка.
Вот код для этого: -
$("#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();
});
Проблема возникает, когда пользователь нажимает на одну из нот, потому что примечания клонируют в холст каждый раз, когда пользователь нажимает на внимание его создания еще одно примечание. Я хочу остановить это поведение и ТОЛЬКО создавать заметку, когда пользователь нажимает на область пустой холста. Я попробовал preventDefauly, stopPropagation и stopImmediate ... но ни один из них, похоже, не имеет никакого влияния.
Я также пробовал их по другим действиям, таким как щелчок на заметке, но просто не может показаться правильным в правильном месте? или я об этом совершенно неправильно?
пример здесь:
http://www.kryptonite-dove.com/sandbox/animate
UPDATE:
$('#canvas').on('click', '.note', function(e) {
e.stopPropagation();
});
Это решило проблему отмечает бурлит, однако теперь он предотвращает любые действия, нажмите на классе ноты, я в неизведанные воды здесь! были бы благодарны за любые указатели на то, как вернуть действие щелчка назад для названия и текста заметки :)
Бриллиант спасибо! отличное объяснение, сжатый код и скрипт JS заставили вас выиграть :) – KryptoniteDove
Splendid! если (e.target! = this) return; работает! – saike