我的JavaScript在ajax响应后无效我知道我必须使用$('.ajax-link').on('click', 'a', function (e){
它的功能但是当我使用它时我的e.preventDefault();
不起作用(意味着整个页面正在加载而不是ajax调用)并且如果我使用$('a.ajax-link').click(function (e) {
那么ajax工作正常但是ajax响应的所有脚本ajax响应后页面无效。我正在使用jquery 1.10
。下面是我的全部代码:
$('a.ajax-link').click(function (e) {
NProgress.start();
if (msie) e.which = 1;
if (e.which != 1 || !$('#is-ajax').prop('checked') || $(this).parent().hasClass('active')) return;
e.preventDefault();
$('.sidebar-nav').removeClass('active');
$('.navbar-toggle').removeClass('active');
$('#loading').remove();
$('#dvLoading').show();
var $clink = $(this);
History.pushState(null, null, $clink.attr('href'));
$('ul li.active').removeClass('active');
$clink.parent('li').addClass('active');
});
History.Adapter.bind(window, 'statechange', function () { // Note: We are using statechange instead of popstate
var State = History.getState(); // Note: We are using History.getState() instead of event.state
$.ajax({
url: State.url,
success: function (msg) {
$('#dvLoading').fadeOut(10);
NProgress.inc();
$('.main-sec').html($(msg).find('.main-sec').html());
NProgress.inc();
setTimeout(function() { NProgress.done(); $('.fade').removeClass('out'); }, 100);
$('#loading').remove();
$('.main-sec').fadeIn();
var newTitle = $(msg).filter('title').text();
$('title').text(newTitle);
docReady();
}
});
});
答案 0 :(得分:0)
您可以手动将脚本标记附加到文档中:
$.ajax({
url: State.url,
success: function (msg) {
var scripts = $("<div>").html(msg).find( "script");
scripts.each(function(){
$('body').append($(this)[0]);
}
}
});
或者您可以使用AMD模式,看看requirejs: http://requirejs.org/