脚本在AJAX加载的DIV中不起作用,只加载了html?

时间:2014-11-27 09:19:03

标签: php jquery arrays ajax javascript-events

我的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();
        }
    });
});

1 个答案:

答案 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/