Aetae, Честно говоря, хрен редьки не слаще, и если завтра вершители JS встрамят метод Array.nonEmpty() во все браузеры, то SuperArray.nonEmpty() будет так же конфликтовать с ними.
Если IE принципиально не важен, то вместо $days.textContent = days < 10 ? '0' + days : days;
можно воспользоваться конструкцией: $days.textContent = String(days).startPad(2, '0');
я бы model_type в этой таблице сделал int, связав с отдельной таблицей пресловутых типов. Тогда бы вполне можно было сделать btree по двум полям path и model_type. А в данном случае - хоть ты лопни, но индексы только место занимать будут бестолку.
С одной стороны всё правильно, достаточно по ключу. Но что будет, например, если у товара изменилась цена в промежуток времени между заказом, и его обработкой? Бегай потом юзеру доказывай, что он сам верблюд…
Очень странная движуха - запросы к серверу в коллбэке ответа. Ну то ладно.
Копать рекомендую в количестве инициализаций слушателя событий. $(что-то там).off('click') за тебя никакой фреймворк не обязан.
leouix, Потому что слушатель события вешается при создании Element'а. Когда создаёшь новый элемент в документе динамически, нужно инициализировать слушателя. Поэтому mahmudchon весьма логично предложил делегировать слушателя документу. В этом случае гарантированно документ слушает события, и по селектору определяет о чём речь.