- Объявите переменные перед их использованием
- Всегда заканчивайте операторы
;
.
- Откажитесь от первого оператора if, ничего не добавляется
- Вы можете использовать
$(f)
вместо $(document).ready(f)
, если хотите
- Вы можете использовать
[]
вместо new Array()
, если хотите
Проблема с вашим кодом, вероятно, заключается в том, что функция, которую вы передаете $.post
, запускается позже , но управление возвращается сразу, поэтому, когда вы попадаете в строку, начинающуюся с if(counter>0)
, функция никогда не выполнялась. Вы можете решить эту проблему, увеличивая переменную каждый раз, когда вы вызываете $ .post, когда вы возвращаете данные, вы уменьшаете и проверяете, все ли сообщения возвращены, и если это так, вы делаете то, что хотите. Пример: * +1022 *
//...
var list = [];
var counter = 0;
$(".something").each(function() {
counter++;
$.post("http://www.example.com/", {foo = "bar"}, function(data) {
list.push(data);
counter--;
if(counter === 0){
alert(list.length);
};
})
});
//...