From Javascrpt is dancing

Show Code

/*
 * @author Shanpeng
 * @copyright: Shanpeng,All rights reserved.
 * @website:http://www.ilovejs.net
 * @e-mail:supersha@foxmail/shanpeng@taobao.com/supershafeng@gmail.com
 * @QQ:770104121
 * @my word:Here,believe what browsers display,and believe yourself
 */
////////////////////// Javascript's code below ///////////////////////
/*
 * @type:event type.
 * @fn:handle function,argument[0] is target Element,"this" reference to @elem.
 * @elem:the aim DOM Element to add an event(elem || id).
 * @subTag: sub DOM Elements's tagName.
 */
var delegate = (function(){
   var $ = function(id){
      return typeof id === "string" ? document.getElementById(id) : id;
   }
   var addListener = function(el, type, fn){
      if (el.addEventListener) {
         el.addEventListener(type, fn, false);
      }
      else {
         el.attachEvent("on" + type, function(e){
            fn.call(el, e);
         });
      }
      return false;
   }
   return function(type, fn, elem, subTag){
      addListener($(elem), type, function(e){
         var e = e || window.event;
         var el = e.srcElement || e.target;
         var nodeName = el.nodeName.toLowerCase();
         if (nodeName === subTag) {
            fn.call(elem, el);
            //if subTag is a "A" element,preventDefault;
            if (nodeName === "a") {
               try {
                  e.preventDefault();
               } 
               catch (o) {
                  e.returnValue = false;
               }
            }
         }
      });
   }
})();