Events
Define events
- onclick (onmouseover, onkeyup, etc.)
- inline in html attribute
- addEventListener
// html
<html>
<head>
<title></title>
<style>
#circle{
posirtion: absolute;
left: 50px;
top: 50px;
height: 100px;
width: 100px;
border-radius: 50%;
background: #000;
}
</style>
</head>
<body>
<div id="circle"></div>
</body>
</html>// javascript
var elem = document.getElementById('circle');
elem.onclick = function(){
this.style.backgroundColor = 'green';
}// html
<html>
<head>
<title></title>
<style>
#circle{
posirtion: absolute;
left: 50px;
top: 50px;
height: 100px;
width: 100px;
border-radius: 50%;
background: #000;
}
</style>
</head>
<body>
<div id="circle" onclick="this.style.backgroundColor = 'yellow';"></div>
</body>
</html>Standart events model
var elem = document.getElementById('id'),
someFunc = function(){
alert('Hello!');
},
anotherFunction = function(){
alert('Goodbye!');
};
elem.addEventListener('click', someFunc, false);
elem.addEventListener('click', anotherFunc, false);
elem.removeEventListener('click', anotherFunc, false);Event object
var someFunc = function(e){
console.log(e.type);
console.log(e.target);
console.log(this);
console.log(e.currentTarget);
e.preventDefault();
}Define events for <IE9
var elem = document.getElementById('id'),
someFunc = function(e){
var targ = e.scrElement; // e.target for normal browsers
e.returnValue = false; // e.preventDefault for normal browsers
alert('Old IE');
}
elem.attachEvent('onclick', someFunction);
elem.detachEvent('onclick', someFunction);
Crossbrowsing events
var eventsObj = {
addEvent: function(el, type, fn){
if (typeof addEventListener !== 'undefined'){
el.addEventListener(type, fn, false);
}
else if(typeof attachEvent !== 'undefined'){
el.attachEvent('on' + type, fn);
}
else {
el['on' + type] = fn;
}
},
removeEvent: function(el, type, fn){
if (typeof removeEventListener !== 'undefined'){
el.removeEventListener(type, fn, false);
}
else if(typeof detachEvent !== 'undefined'){
el.detachEvent('on' + type, fn);
}
else {
el['on' + type] = null;
}
}
}
var eventsObj = {
getTarget: function(event){
if(typeof event.target !== 'undefined'){
return event.target;
}
else {
return event.scrElement;
}
},
preventDefault: function(event){
if(typeof event.preventDefault !== 'undefined'){
event.preventDefault();
}
else {
event.returnValue = false;
}
}
}
var el = document.getElementById('id'),
someFunc = function(){
alert('some function!');
};
eventsObj.addEvent(el, 'click', someFunc);Delegate
var changeColor = function (e) {
eventsObj.preventDefault(e);
var elem = eventsObj.getTarget(e),
colorData = elem.getAttribute('data-color');
if ( colorData ) {
if (e.type === 'click') {
document.body.className = '';
} else if (e.type === 'mouseover') {
document.body.className = colorData;
}
}
};
eventsObj.addEvent(document, 'click', changeColor );
eventsObj.addEvent(document, 'mouseover', changeColor );JS - Events
By andrei_bibik
JS - Events
- 781