2011-01-26 3 views
3

Я разрабатываю сайт, который анализирует RSS-каналы и отображает их в виде серии div. После загрузки всех загрузок я хотел бы запустить функцию jquery, которая в основном занимает высоту самого высокого div и устанавливает все divs, равные этой высоте. Вы можете просматривать сайт здесь: http://vitaminjdesign.com/adrian/Выравнивание высот с помощью JQuery после события

В настоящее время я с помощью JQuery equal heights plugin, описанной ниже:

function equalHeight(group) { 
    var tallest = 0; 
    group.each(function() { 
     var thisHeight = $(this).height(); 
     if(thisHeight > tallest) { 
      tallest = thisHeight; 
     } 
    }); 
    group.height(tallest); 
} 

и вы можете назвать его:

$(document).ready(function() { 
$(".block").equalHeights(); 
}); 

Это не работает должным образом (он устанавливает высоту всех divs, равных высоте самого высокого div ПЕРЕД НАЗНАЧЕНИЕМ rss-загрузки), скорее всего, из-за того, что мне нужно использовать обработчик событий в реальном времени? Кто-нибудь знает, как я могу установить высоту равным после того, как все будет полностью загружено?

ответ

4

После завершения работы AJAX необходимо позвонить по телефону equalHeight. У вас есть два варианта: (a) выполнить вызов после загрузки каждого элемента или (b) выполнить вызов один раз после загрузки всех элементов. equalHeight не выглядит ресурсоемким, поэтому вы также можете делать вызов каждый раз.

Так что просто добавьте equalHeight($(".block")); в обратный вызов success каждого вызова AJAX.

$.ajax({ 
    url: 'someurl.rss', 
    success: function(){ 
     // your code to insert the relevant content 

     equalHeight($(".block")); // insert this at the end of each call to the RSS files 
    } 
}); 

В качестве альтернативы, и немного более интенсивным, но проще с точки зрения кода, заключается в использовании ajaxSuccess запустить функцию после каждого AJAX вызова:

$(document).ajaxSuccess(function(){ 
    equalHeight($(".block")); 
}); 
+0

Я не знаком с этим методом, но для того, чтобы это сработало, я думаю, что мне нужно будет позвонить после загрузки всех предметов ... – JCHASE11

+0

$ (document) .ajaxSuccess (function() {WORKS отлично. Спасибо !!! – JCHASE11

+0

Функция render высота совсем по-другому в Chrome ... Я думаю, из-за ajaxSu ccess – JCHASE11