다른 많은 사람들처럼 아약스로로드하는 외부 페이지의 스크립트를 다루는 데 문제가 있습니다.아약스에서로드 된 여러 스크립트를 처리하기위한 구조
페이지 상단에 "관리 패널"이있는 페이지를 설정하려고합니다. 패널 내에서 여러 관리 페이지로 이동할 수 있기를 원합니다. 다른 관리 페이지에는 내부에 <script>
과 외부 js 파일이 있습니다. 스크립트는 꼭로드해야하지만 겹쳐 보이거나 좋은 방법으로 관리되지 않는 것 같습니다. 그래서 두 개의 경고마다 내가 사업부를 클릭을 얻을 여기
$('.left-col').click(function() {
alert();
});
, 나는 그것이 또 다른 클릭 바인딩이 페이지로 돌아올 때마다 :
나는 관리자 페이지 중 하나에 작은 테스트를했다 . 내 ajax.success에서$('.left-col').unbind();
을 실행하면 쉽게 해결할 수 있습니다.
일부 관리 페이지의 경우 .click/.change/.live 등이 많으며 외부 플러그인의 내용이 무엇인지 확실하지 않습니다. 그래서 어떻게 든 각 바인딩을 해제/각 요소를 지정하지 않고 내 아약스로드 된 각 페이지에서로드 된 스크립트를 제거 할 수 있습니까? 내가 바인딩 해제와 셀렉터를 사용할 수 있지만 그것은 각 div/img/입력 등 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>
관리자 페이지는 상당히 광범위하며 많이 다릅니다. 그러나 각 페이지의 내용 주위에 div.panel__inner를 배치 했으므로 다른 페이지를로드 할 때 쉽게 제거 할 수 있습니다. $ (body)는 내가 관리 패널을로드하는 프로젝트 페이지를 참조합니다. 그래서 나는 시체를 지우고 싶지는 않습니다. – acetrand