如下js代码,其中addEventListener,被多次监听click事件,ajaxSend被多次执行,我们只需要在ajaxSend后加上event.stopImmediatePropagation(),就不会被多次监听发送了
if(document.getElementById('menu')) {
// get menu LIs
var lists = document.getElementById('menu').querySelectorAll('li span');
var nr_lists = lists.length;
//console.log(nr_lists);
// register click to eack span-li
if(nr_lists > 0) {
for(var i=0; i<nr_lists; i++) {
lists[i].addEventListener('click', function(e){
if(e.target.id == current_span) return false;
else {
// removes and sets id for current element
if(document.getElementById(current_li)) document.getElementById(current_li).removeAttribute('id');
if(document.getElementById(current_span)) document.getElementById(current_span).removeAttribute('id');
e.target.parentNode.setAttribute('id', current_li);
li_name = e.target.childNodes[0].nodeValue;
title_dir = e.target.title;
if (document.getElementById(current_li)) {
parentdir = document.getElementById(current_li).parentNode.getAttribute('parentdir');
//console.log(parentdir);
}
ajaxSend('imgdr='+ ((parentdir != null && parentdir != '根目录') ? parentdir + '/':'') + title_dir, ajaxCallback); // get data from php
e.stopImmediatePropagation();
}
}, false);
}
}