I have problem with plugin: Codemirror. Plugin works good but when I try connect with bootstrap modal that is problem.
1) When I click first time that is ok (1 code block) 2) When I close first modal and run second time that is: 3 code block (duplicate) 3) When I close second modal and run third time that is: 6 code block (duplicate)
My code:
<div class="modal fade" id="code-editor" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="">Edytor elementu</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-12">
<div id="code"></div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" name="close">Anuluj</button>
<button type="button" class="btn btn-primary" data-dismiss="modal" name="save">Zapisz</button>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
$('[data-element-id]').append('<i class="glyphicon glyphicon-pencil edit-element"></i>').css({position: 'relative'});
$('body').on( 'click', '[data-element-id] i.edit-element', function(){
var code = $(this).parent();
var code_new = code.clone();
code_new.find('i.edit-element').remove();
$('#code-editor').modal('show');
$('#code-editor').on('shown.bs.modal', function () {
editor = CodeMirror($('#code-editor #code')[0], {
mode: "text/html",
lineNumbers: false,
value: '<h1>Example text</h1>'
});
});
$('#code-editor button[name="save"]').on('click',function(){
code.html(editor.getValue()).append('<i class="glyphicon glyphicon-pencil edit-element"></i>');
});
});
});
</script>
<link rel="stylesheet" href="assets/front/plugins/codemirror/lib/codemirror.css">
<script src="assets/front/plugins/codemirror/lib/codemirror.js"></script>
<script src="assets/front/plugins/codemirror/mode/xml/xml.js"></script>
And image: result image
I have a solution:
use .off('click')
example:
$('body').off('click').on( 'click', '[data-element-id] i.edit-element', function(){