Мой 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();
}
});
});
Вы можете вручную добавить тег scripts к вашему документу:
$.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/
Других решений пока нет …