Событие клика на динамическом элементе БЕЗ jQuery
Я хотел бы добавить событие, такое как onclick или mouseover, к динамически созданному элементу (подобно функции.live в jQuery)... как мне сделать это, используя чистый javascript без каркаса, такого как jQuery? Вот простая jsFiddle http://jsfiddle.net/3tBpv/1/
Я хотел бы быть в состоянии сделать это из недавно созданного класса divs вместо id.
Любая помощь будет принята с благодарностью
2 ответа
Создайте один обработчик для объекта документа. Проверьте класс целевого элемента и имя узла (тег). Если они совпадают, выполните все, что нужно сделать, в противном случае игнорируйте щелчок.
document.onclick = function(event) {
var el = event.target;
if (el.className == "new" && el.nodeName == "DIV") {
alert("div.new clicked");
}
};
Вот скрипка
Ответ @Anurag является правильным, но не полным, и в большинстве случаев приведет к множеству ошибок интеграции.
Вот правильная версия:
document.addEventListener("click", function(event)
{
// retrieve an event if it was called manually
event = event || window.event;
// retrieve the related element
var el = event.target || event.srcElement;
// for all A tags do the following
if (el instanceof HTMLAnchorElement )
{
//required to make the "return false" to affect
event.preventDefault();
window.location.href = "/click.php?href="+encodeURIComponent(el.href);
//prevent user's click action
return false;
}
}, true);
Эта базовая функция отслеживания кликов влияет на все ссылки на странице, чтобы отслеживать / записывать все клики по ссылкам.