Для продвинутого читателя, который знает, что теги<script>
можно добавлять на страницу в любой момент при помощи самого javascript, заметим, что скрипты, добавленные таким образом, ведут себя так же, как async. То есть, выполняются как только загрузятся, без сохранения относительного порядка.
Если же нужно сохранить порядок выполнения, то есть добавить несколько скриптов, которые выполнятся строго один за другим, то используется свойство script.async = false.
вдруг люди придумали что-то более продуктивное?Так а что может быть продуктивного в IE8? MutationObserver там не поддерживается, поэтому остаётся только setInterval().
var array = [];
function load_reservation(stock, year, month, callback) {
$.post("'.Url::to(['site/ajax-load-reservation']).'", {"stock": stock, "year": year, "month": month}, function (data) {
if (data.result == 1) {
callback(data.array);
}
else callback([]);
}, "json");
}
$(".book").each(function () {
var id = $(this).attr("data-stock_id");
load_reservation(id, null, null, function (result) {
array[id] = result;
console.log(array[id]);
});
});
Есть предположение, что БД после долго не использования закрывает соединение.
npm i -g webpack
<ul id="list">
<li class="yes">1</li>
<li class="no">2</li>
<li class="no">3</li>
<li>...</li>
<li class="yes">100</li>
</ul>
function on(elSelector, eventName, selector, fn) {
var element = document.querySelector(elSelector);
element.addEventListener(eventName, function(event) {
var possibleTargets = element.querySelectorAll(selector);
var target = event.target;
for (var i = 0, l = possibleTargets.length; i < l; i++) {
var el = target;
var p = possibleTargets[i];
while(el && el !== element) {
if (el === p) {
return fn.call(p, event);
}
el = el.parentNode;
}
}
});
}
on('#list', 'click', '.yes', function(e) {
// this function is only called, when a list item with 'yes' class is called
console.log(e.target); // this is the clicked list item
});