Сегодня столкнулся с тем что когда работаешь с JavaScript иногда приходится «подчищать» за собой. Например: подгружаем при помощи AJAX некий html в котором в есть в свою очередь код на JavaScript.
jQuery("#list2").jqGrid('navButtonAdd','#pager2',{caption:"Отредактировать",
onClickButton:function(){
var gsr = jQuery("#list2").jqGrid('getGridParam','selrow');
if(gsr){
//$("#pg_add_edit" ).dialog( "destroy" );
$("#pg_add_edit").dialog({autoOpen: false,height: 600,width: 800,modal:true,title: "Редактирование новости" });
$("#pg_add_edit" ).dialog( "open" );
$("#pg_add_edit").load("client/view/news/news.php?step=edit&id="+gsr);
} else {
alert("Сначала выберите строку!")
}
}
});
Вот подгружаемый код:
<script type="text/javascript" src="js/tinymce/tinymce.min.js"></script>
<div id="messenger"></div>
<form ENCTYPE="multipart/form-data" action="?content_page=news&step=<?php echo "$step&newsid=$id"; ?>" method="post" name="form1" target="_self">
<input name=dtpost id=dtpost value="<?php echo "$dtpost"; ?>"><br>
<input name=title id=title value="<?php echo "$title";?>" class="span8" placeholder="Заголовок"><br>
<textarea class="span12" name=txt rows="15" placeholder="Введите новость">
<?php echo "$txt";?>
</textarea>
</form>
<script>
$( "#pg_add_edit" ).dialog({
close: function() {$( "#dtpost" ).datepicker( "destroy" );
tinymce.activeEditor.destroy();
}
});
$("#dtpost").datepicker();
$("#dtpost").datepicker( "option", "dateFormat", "dd.mm.yy");
<?php if ($step!='edit'){?>
$("#dtpost").datepicker( "setDate" , "0");
<?php } else {?>
$("#dtpost").datepicker( "setDate" , "<?php echo "$dtpost"; ?>");
<?php };?>
tinymce.init({selector:'textarea'});
</script>
Т.е. чтоб не плодить datepicker и редакторы tinymce каждый раз, как будет нажата кнопка «отредактировать», отлавливаем закрытие диалогового окна. После закрытия — уничтожаем объекты datepicker и редакторы tinymce. Т.е. если не уничтожите, может ничего страшного и не случится. Но потенциальная утечка памяти. Открыл-закрыл 10 раз — ушло 10 мегабайт.
Обычно я тоже не особо обращал внимание на такие мелочи, ибо не слишком часто сталкиваешься с ситуацией, что какой то объект на странице нуждается в создании много раз.