Так что, как и у многих других, у меня проблемы со скриптами с внешних страниц, которые я загружаю с помощью ajax
Я пытаюсь создать страницу с «административной панелью» поверх нее.Я хочу, чтобы иметь возможность перейти к нескольким страницам администратора на панели.На разных страницах администрирования есть как внутренние <script>
, так и внешние js-файлы, которые они включают.Скрипты загружаются так, как должны, но, похоже, они складываются или плохо управляются.
Я провел небольшой тест на одной из страниц администратора:
$('.left-col').click(function () {
alert();
});
Здесь, всякий раз, когда я возвращаюсь на эту страницу, она привязывает к ней еще один щелчок, поэтому я каждый раз получаю два предупрежденияЯ нажимаю div.Я могу легко решить эту проблему, запустив $('.left-col').unbind();
в моем ajax.success.
Однако для некоторых административных страниц существует множество .click / .change / .live и т. Д., И я даже не уверен, что они есть (то есть из внешних плагинов).Так могу ли я как-то отсоединить / удалить все скрипты, загруженные с каждой из моих страниц, загруженных ajax, без необходимости указывать каждый элемент?Я знаю, что могу использовать селекторы с unbind, но, кажется, не очень эффективно зацикливаться на каждом div / img / input и т. Д. И unbind, и я даже не уверен, сработает ли это.
Вот так я загружаюстраницы администратора:
<script type="text/javascript">
$(document).ready(function() {
function reloadAdminPanel(url) {
if(typeof(url) === "undefined") {
var url = '/admin/panel/dashboard/';
}
$.ajax({
'success': function (data, textStatus) {
var jData = $(data);
// override links in admin to run reloadAdminPanel()
jData.find('a').each(function() {
var newUrl = $(this).attr('href');
$(this).click(function(e) {
reloadAdminPanel(newUrl);
return false;
});
});
$('div.panel__inner').remove();
$('body').prepend(jData);
delete jData;
},
'url': url
});
}
reloadAdminPanel();
});
</script>
Любая помощь приветствуется, ура!
Структура страницы:
<html>
<body>
<div class="panel__inner"> <!-- admin panel --> </div>
<!-- rest of project site -->
</body>
</html>