Get Clicked <li> from <ul onclick>
You can use event.target
for this:
JS:
// IE does not know about the target attribute. It looks for srcElement
// This function will get the event target in a browser-compatible way
function getEventTarget(e) {
e = e || window.event;
return e.target || e.srcElement;
}
var ul = document.getElementById('test');
ul.onclick = function(event) {
var target = getEventTarget(event);
alert(target.innerHTML);
};
HTML:
<ul id="test">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
Example: http://jsfiddle.net/ArondeParon/2dEFg/5/
Please note that this is a very basic example and you will likely encounter some problems when you delegate events to elements containing more than one level. When this happens, you will have to traverse the DOM tree upwards to find the containing element.
The object which was actually clicked is
event.target
inside the onclick
callback. What you are trying to do is a good idea, and it is known as event delegation.
http://jsfiddle.net/VhfEh/