var randomWithPrecision = function (min, max, precision) {
var x = Math.random() * (max - min) + min;
var p = Math.pow(10, precision);
return Math.round(x * p) / p;
};
for (var i = 0; i < 10; i++) {
console.log( randomWithPrecision(20, 24, 1) );
}
var body = document.body;
var move = function(e) {
console.log("x: " + e.pageX + " | y: " + e.pageY);
};
body.addEventListener("touchmove", move);
body.addEventListener("mousemove", move);
// и не нужен никакой фабрик-фигабрик
var div = $('div.foo');
// новейшие браузеры (ИЕ 11+)
var observerConfig = {
attributes: true // отслеживаем только изменения атрибутов
};
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
switch (mutation.attributeName) {
case 'class':
alert('у ноды поменялся класс');
break;
default:
alert('у ноды поменялся атрибут ' + mutation.attributeName);
}
});
});
observer.observe(div[0], bserverConfig);
// =============================
// более старые браузеры (ИЕ 9+)
div.on('DOMAttrModified', function(e) {
alert('у ноды поменялся атрибут ' + e.originalEvent.attrName);
});
// =============================
setTimeout(function() {
div.addClass('test');
}, 5000);