如下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);
      }
    }