2015-03-17 2 views
0

Как я могу запустить приведенный ниже код только после того, как код 1 загрузил все его содержимое с внешней страницы?Запустить код jQuery после загрузки AJAX jQuery()

JQuery скрипт пытался

//filters 
$(window).bind("load", function() { 
    $(".filters li").on("click", function() { 
    id = ($(this).data("id")+'').split(','); 
    filter = $(this).data("filter"); 
    $("#hotel-list .box").hide(); 
    id[0] == "all" && $("#hotel-list .box").show() || id.forEach(function(v){ 
     $('#hotel-list .box[data-'+filter+'*="'+v.trim()+'"]').show(); 
    }); 
    return false; 
}); 
     <!-- Count Star Rating --> 
     var two_stars = $("article[data-stars*='2']").length; 
     var three_stars = $("article[data-stars*='3']").length; 
     var four_stars = $("article[data-stars*='4']").length; 
     var five_stars = $("article[data-stars*='5']").length; 
     $('.total-three').text(three_stars); 
     $('.total-four').text(four_stars); 
     $('.total-five').text(five_stars); 
     var totals = three_stars + four_stars + five_stars + two_stars; 
     $('.totals').text(totals);  
     <!-- Count Board --> 
     var board_no = $("article[data-board*='No']").length  
     var board_ro = $("article[data-board*='Room']").length 
     var board_bb = $("article[data-board*='Breakfast']").length;    
     var board_fb = $("article[data-board*='Full Board']").length  
     var board_hb = $("article[data-board*='Half']").length 
     var board_ai = $("article[data-board*='All']").length 
     var board_sc = $("article[data-board*='Self']").length 
     $('.total-ro').text(board_ro); 
     $('.total-bb').text(board_bb); 
     $('.total-fb').text(board_fb); 
     $('.total-hb').text(board_hb); 
     $('.total-ai').text(board_ai); 
     $('.total-sc').text(board_sc); 
     var total = board_ro + board_bb + board_fb + board_hb + board_ai + board_sc + board_no; 
     $('.total').text(total); 

    //Fix broken images 
    fixBrokenImages = function(url){ 
    var img = document.getElementsByTagName('img'); 
    var i=0, l=img.length; 
    for(;i<l;i++){ 
     var t = img[i]; 
     if(t.naturalWidth === 0){ 
//this image is broken 
      t.src = url; 
     } 
    } 
} 
window.onload = function() { 
    fixBrokenImages('images/noimg.png'); 
} 
}); 

И код JQuery AJAX является:

var datastring = location.search; // now you can update this var and use 
$("#hotel-list").load("Rezults2.php"+ datastring + " #hotel-list> *"); 

Поэтому мне нужно, что 1-коды, которые будут выполняться только после того, как второй код сделал свою работу (от 3 до 9 секунд)

ANI ideea на этом?

+0

использование обратного вызова метода функции нагрузки() в JQuery –

+0

@MarsOne вы seroius? – CARASS

+0

'$ (" # hotel-list "). Load (" Rezults2.php ", function() {/ * делать что-то еще. * /})' –

ответ

2
function runThisAfter() { 
    var two_stars = $("article[data-stars*='2']").length; 
    var three_stars = $("article[data-stars*='3']").length; 
    var four_stars = $("article[data-stars*='4']").length; 
    var five_stars = $("article[data-stars*='5']").length; 
    //etc... 
} 

$("#hotel-list").load("Rezults2.php", function(){ runThisAfter(); }); 

Это будет работать «runThisAfter()», когда загрузка будет завершена.

+0

Спасибо, но если вы проверите этот код, он сделает больше, чем загрузится. поэтому мне нужно иметь те же функции. – CARASS

+0

Завершение кода зависит от вас. На ваш вопрос был дан ответ: используйте функцию обратного вызова для добавления кода после завершения первого вызова. Вы можете добавить весь свой первый скрипт к «runThisAfter()», но использование «onLoad» и «load» не требуется и не требуется, поскольку вы хотите загрузить его в обратном вызове. – Mackan

+0

Спасибо, я понял :) – CARASS

0

Решение:

$(document).ajaxComplete(function(event, xhr, settings) { 
    // Your complete function here 
}); 

или в моем случае полный код:

 $(document).ajaxComplete(function(event, xhr, settings) { 
     //Count STARS 
     var two_stars = $("article[data-stars*='2']").length; 
     var three_stars = $("article[data-stars*='3']").length; 
     var four_stars = $("article[data-stars*='4']").length; 
     var five_stars = $("article[data-stars*='5']").length; 
     $('.total-three').text(three_stars); 
     $('.total-four').text(four_stars); 
     $('.total-five').text(five_stars); 
     var totals = three_stars + four_stars + five_stars + 
      two_stars; 
     $('.totals').text(totals); 
     //COUNT BOARD 
     var board_no = $("article[data-board*='No']").length 
     var board_ro = $("article[data-board*='Room']").length 
     var board_bb = $("article[data-board*='Breakfast']").length; 
     var board_fb = $("article[data-board*='Full Board']").length 
     var board_hb = $("article[data-board*='Half']").length 
     var board_ai = $("article[data-board*='All']").length 
     var board_sc = $("article[data-board*='Self']").length 
     $('.total-ro').text(board_ro); 
     $('.total-bb').text(board_bb); 
     $('.total-fb').text(board_fb); 
     $('.total-hb').text(board_hb); 
     $('.total-ai').text(board_ai); 
     $('.total-sc').text(board_sc); 
     var total = board_ro + board_bb + board_fb + board_hb + 
      board_ai + board_sc + board_no; 
     $('.total').text(total); 
     //Fix broken images 
     fixBrokenImages = function(url) { 
      var img = document.getElementsByTagName('img'); 
      var i = 0, 
      l = img.length; 
      for (; i < l; i++) { 
      var t = img[i]; 
      if (t.naturalWidth === 0) { 
       //this image is broken 
       t.src = url; 
      } 
      } 
     } 
     window.onload = function() { 
      fixBrokenImages('images/noimg.png'); 
     } 
     }); 
     }); 
Смежные вопросы