code: function showRipple(e) {
      if (!TouchHandler.isAllow(e)) {
        return;
      }
  
      TouchHandler.register(e);
  
      // Chrome 59 点击滚动条时，会在 document 上触发事件
      if (e.target === document) {
        return;
      }
  
      var $ripple;
      var $target = $(e.target);
  
      // 获取含 .mdui-ripple 类的元素
      if ($target.hasClass('mdui-ripple')) {
        $ripple = $target;
      } else {
        $ripple = $target.parents('.mdui-ripple').eq(0);
      }
  
      if ($ripple.length) {
  
        // 禁用状态的元素上不产生涟漪效果
        if ($ripple[0].disabled || $ripple.attr('disabled') !== null) {
          return;
        }
  
        if (e.type === 'touchstart') {
          var hidden = false;
  
          // toucstart 触发指定时间后开始涟漪动画
          var timer = setTimeout(function () {
            timer = null;
            Ripple.show(e, $ripple);
          }, Ripple.delay);
  
          var hideRipple = function (hideEvent) {
            // 如果手指没有移动，且涟漪动画还没有开始，则开始涟漪动画
            if (timer) {
              clearTimeout(timer);
              timer = null;
              Ripple.show(e, $ripple);
            }
  
            if (!hidden) {
              hidden = true;
              Ripple.hide(hideEvent, $ripple);
            }
          };
  
          // 手指移动后，移除涟漪动画
          var touchMove = function (moveEvent) {
            if (timer) {
              clearTimeout(timer);
              timer = null;
            }
  
            hideRipple(moveEvent);
          };
  
          $ripple
            .on('touchmove', touchMove)
            .on('touchend touchcancel', hideRipple);
  
        } else {
          Ripple.show(e, $ripple);
          $ripple.on('touchmove touchend touchcancel mousemove mouseup mouseleave', Ripple.hide);
        }
      }
    }
docs: 显示涟漪，并绑定 touchend 等事件
  @param e