我想添加一個事件,如onclick或mouseover到一個動態創建的元素(類似於jQuery中的.live函數)......我如何在沒有框架的情況下使用純JavaScript如jQuery?這裏是一個簡單的jsFiddle http://jsfiddle.net/3tBpv/1/在動態元素上點擊事件沒有jQuery
我想能夠做到這一點從新創建的div類而不是一個id。
任何幫助,將不勝感激
我想添加一個事件,如onclick或mouseover到一個動態創建的元素(類似於jQuery中的.live函數)......我如何在沒有框架的情況下使用純JavaScript如jQuery?這裏是一個簡單的jsFiddle http://jsfiddle.net/3tBpv/1/在動態元素上點擊事件沒有jQuery
我想能夠做到這一點從新創建的div類而不是一個id。
任何幫助,將不勝感激
創建文檔對象上一個處理程序。檢查目標元素的類和節點名稱(標記)。如果它們匹配,繼續執行任何需要的操作,否則忽略點擊。
document.onclick = function(event) {
var el = event.target;
if (el.className == "new" && el.nodeName == "DIV") {
alert("div.new clicked");
}
};
這是fiddle。
@Anurag's answer是正確的,但不完整,在大多數情況下會導致大量的集成bug。
這裏是正確的版本:
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);
這是一個基本的點擊追蹤功能會影響頁面上的所有鏈接跟蹤/記錄的所有鏈接的點擊次數。
這裏的'return false'實際上並沒有做任何事 - 這是一個jQuery發明,爲你調用event.preventDefault。請參閱http://stackoverflow.com/a/1357151/589391。 – gsf 2014-07-28 22:01:51
jQuery的「live」方法甚至可以用這種方式進行收聽,upvote! – ctcherry 2011-03-21 00:08:28
非常好,這正是我正在尋找...不知道爲什麼我沒有想到這一點。謝謝! – Tony 2011-03-21 00:13:09
+1明顯更好=) – kjy112 2011-03-21 00:13:48