function getSomeHtml() {
return $(this).html();
}
for (var p = 0, len = number.length; p < len; p++) {
if (number[p] == 'Свободен') {
number_js[p] = $('.ofice:eq(' + p + ')>.ofice_number>strong').map(getSomeHtml)[0];
for (var i = 0, len = rsrGroups.length; i < len; i++) {
if (number_js[p] == rsrGroups[i].data("room")) {
rsrGroups[i].attr('fill', '#F4DA6C');
}
}
}
}
number_js[p] = $('.ofice:eq(' + p + ')>.ofice_number>strong').first().html();
Может быть можно как то элегантнее решить данную задачу?Разумеется, можно. Достаточно понять, что вам нужно не строки таблицы сортировать, а данные. И уже данные потом рендерить.
methods.init.apply(this, arguments);
You may also pass in a matrix while instantiating the PF.Grid class. It will initiate all the nodes in the grid with the same walkability indicated by the matrix. 0 for walkable while 1 for blocked.
matrix [координата Y (номер строки)] [координата X (номер колонки)]
document.querySelector("#nav-toggle")
if ($(window).width() > 991) {
$("#nav-toggle").on("click", function() {
$(this).toggleClass("active");
});
}
var classes = ['item-id', 'item-title', 'item-price', 'delete-btn'];
$('#sf tr').each(function () {
var $cell = $('<td>').append('<a class="add_item">Добавить в корзину</a>');
$(this).append($cell);
$(this).find('td').each(function (index, element) {
$(element).addClass(classes[index]);
});
});
var classes = ['item-id', 'item-title', 'item-price', 'delete-btn'],
$rows = $('#sf tr').filter(':gt(0)'),
$link = $('<a>').addClass('add_item').text('Добавить в корзину'),
$cell = $('<td>').append($link),
$cells;
$rows.append($cell);
$cells = $rows.find('td');
$cells.each(function (index, cell) {
$(cell).addClass(classes[index % classes.length]);
});
На сколько я поля это фишка асинхронности !?Правильно поняли.
Это получается нужно код выстраивать цепочкой из калбэков ?Необязательно. (для nodejs, понятно, своя специфика, но общие принципы такие же, естественно).
$(document).ready(function () {
var owl = $(".sldr").owlCarousel().data('owlCarousel');
$(window).on('mousewheel', debounce(function (event) {
var direction = event.originalEvent.deltaY < 0 ? 'next' : 'prev';
owl[direction]();
}, 100));
});
function debounce(func, wait, immediate) {
var timeout, args, context, timestamp, result;
var later = function () {
var last = new Date().getTime() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
if (!timeout) context = args = null;
}
}
};
return function () {
context = this;
args = arguments;
timestamp = new Date().getTime();
var callNow = immediate && !timeout;
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
}
var buttons = document.querySelectorAll('.js-btn-item'),
popups = document.querySelectorAll('.js-products-popup'),
closers = document.querySelectorAll('.js-btn-close'),
index, button, popup, closer;
for (index = 0; index < buttons.length; index++) {
button = buttons[index];
popup = popups[index];
closer = closers[index];
button.addEventListener('click', buttonHandler(popup));
closer.addEventListener('click', closerHandler(popup))
}
function buttonHandler(popup) {
return function (event) {
event.preventDefault();
popup.classList.add('js-popup-show');
}
}
function closerHandler(popup) {
return function (event) {
event.preventDefault();
popup.classList.remove('js-popup-show');
}
}
$(e).one('click', function () {
в следующий раз не вызывать эту функцию при клике на $(e)
})
updateResult(".currentItem", this.owl.currentItem);
var buttonItems = document.querySelectorAll('.button-item'),
index, button;
for (index = 0; index < buttonItems.length; index++) {
button = buttonItems[index];
button.addEventListener('click', function (event) {
console.log('click');
event.preventDefault();
});
}
var buttons = document.querySelectorAll('.button-item'),
index, button;
for (index = 0; index < buttons.length; index++) {
button = buttons[index];
button.addEventListener('click', clickHandler);
button.addEventListener('dblclick', doubleClickHandler);
}
function clickHandler(event) {
console.log('click', this.innerText);
event.preventDefault();
}
function doubleClickHandler(event) {
console.log('doubleclick', this.innerText);
this.removeEventListener('click', clickHandler);
this.removeEventListener('dblclick', doubleClickHandler);
}
one().done(two);
function one() {
var dfd = new $.Deferred();
// Запускаем асинхронную задачу. Например, ajax-запрос.
setTimeout(function () {
var foo = 'bar';
// "Выполняем обещание", передавая в него какую-то информацию.
// Передавать аргументы, разумеется, не обязательно.
dfd.resolve(foo);
}, 2000);
// Возвращаем из функции обещание, на которое могут подписаться другие функции.
// Обратите внимание, этот код выполнится до того, как завершится асинхронная задача.
return dfd.promise();
}
function two(foo) {
// Обрабатываем данные, полученные внутри асинхронной функции one.
console.log('two', foo);
}
one().then(two, onOneError).then(three, onTwoError);
function one() {
var dfd = new $.Deferred();
setTimeout(function () {
console.log('one');
if (Math.round(Math.random() * 10) >= 5)
{
dfd.resolve();
}
else
{
dfd.reject();
}
}, 1000);
return dfd.promise();
}
function two() {
var dfd = new $.Deferred();
setTimeout(function () {
console.log('two');
if (Math.round(Math.random() * 10) >= 5)
{
dfd.resolve();
}
else
{
dfd.reject();
}
}, 1000);
return dfd.promise();
}
function three() {
setTimeout(function () {
console.log('three');
}, 1000);
}
function onTwoError() {
console.log('twoError', arguments);
}
function onOneError() {
console.log('oneError', arguments);
}
one(function () {
two(three)
});
function one(callback) {
console.log('one');
setTimeout(callback, 1000);
}
function two(callback) {
console.log('two');
setTimeout(callback, 1000);
}
function three() {
console.log('three');
}
Как узнать, в каком месте вылезла ошибка?console.error выводит полный стек вызовов со ссылками на конкретные строки конкретных скриптов.