如何從addEventListener
中刪除重複項。如何從addEventListener中刪除dupliacte
我有網站,當用戶打某些電話時,使用ajax填充不同的div。我也有一個JavaScript函數抓取所有的鏈接,並使addEventListener
,以便我可以過濾的網址,如果用戶點擊某些鏈接提供警報。下面是創建addEventListener
function supportFunction() {
var myFunction = function(e) {
var regExp = new RegExp('//'+location.hostname+'($|/)');
var href = this.href;
if (regExp.test(href)) {
e.preventDefault();
alert('same domain link');
}
}
var links = document.querySelectorAll('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', myFunction);
}
}
我現在面臨的問題是,一些內容被使用supportfunction後阿賈克斯()被調用填充,如果任何環節都出現在新填充我的Java腳本函數內容它不會被添加到addEventListener
。每當進行ajax調用時,我都會嘗試調用supportfunction,但是在這種情況下,會將重複項添加到eventlistener中。也就是說,如果有人點擊相同的域名鏈接,他們將得到2個警報,並且一些情況下會發生3-4次警報,具體取決於調用supportfunction()的時間。
我想我解釋過,我的問題是什麼。讓我知道你們是否想要更多關於這個問題的解釋。
我試着googleing一個答案,發現這個鏈接 http://dean.edwards.name/weblog/2005/10/add-event/但不能弄清楚如何在我的情況下使用它。
注:我正在尋找一個純java腳本解決方案而不是jQuery解決方案。 (我希望我在這裏不要求:))
尋找「事件代表團」。不要在鏈接上添加事件,而是在靜態父容器上添加事件,然後使用事件目標元素來確定它是否是鏈接。 – elclanrs
我會將*一個*'click'事件附加到body,然後檢查'event.target'或'event.srcElement'。如果元素是鏈接('a'),則執行函數。 – JCOC611
[動態創建的元素上的事件綁定?]的可能重複?(http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – Bergi