当前位置: 代码迷 >> Web前端 >> MzTree2.0梅花雪树单击Node页面跳动有关问题解决及单击展开子节点
  详细解决方案

MzTree2.0梅花雪树单击Node页面跳动有关问题解决及单击展开子节点

热度:111   发布时间:2012-11-23 22:54:33.0
MzTree2.0梅花雪树单击Node页面跳动问题解决及单击展开子节点

MzTree梅花雪树单击Node页面跳动问题解决及单击展开子节点


问题:
1.
梅花雪树2.0 中单击一个URL: #的节点的时候,会是页面跳动到最顶部,很麻烦,影响使用
2.
梅花雪树2.0 中单击节点名称展开子节点功能实现


故修改了mztreeview2\scripts\system\web\ui\webcontrols 下的mztreeview.js文件
添加了2个 String 方法:endsWith 和 startsWith
并且修改了
//private: attachEvent tree onClick
MzTreeView.prototype.clickHandle = function(e) 方法

代码如下:

//public:String startsWith endsWith  by feiding 20091209
String.prototype.startsWith = function(prefix) {
    return this.indexOf(prefix) == 0;
};

String.prototype.endsWith = function(suffix) {
    return this.match(suffix+"$") == suffix;
};

//private: attachEvent tree onClick update by feiding 20091209
MzTreeView.prototype.clickHandle = function(e)
{
  e = window.event || e; var B;
  e = e.srcElement || e.target;
  if(B=(e.id && 0==e.id.indexOf(this.index +"_")))
  {
    var n=this.currentNode=this.nodes[e.id.substr(e.id.lastIndexOf("_")+1)];
  }
  switch(e.tagName)
  {
    case "IMG" :
      if(B)
      {
        if(e.id.indexOf(this.index +"_expand_")==0){
          n.expanded ? n.collapse() : n.expand();}
        else if(e.id.indexOf(this.index +"_icon_")==0){
          n.focus();}
        else if(e.id.indexOf(this.index +"_checkbox_")==0){
          n.check(!n.checked); n.upCheck();}
      }
      break;
    case "A":
        if(e.href.endsWith("#")){
        {
            e=this.nodes[e.id.substr(e.id.lastIndexOf("_") +1)];
            e.expanded ? e.collapse() : e.expand();
            this.currentNode=e;
            n.focus();
        }
        window.event.returnValue = false; 

    }else{
        if(B){ n.focus(); this.dispatchEvent(new System.Event("onclick"));}
    }
      break;
    default :
      if(System.ns) e = e.parentNode;
      break;
  }
};



附件上传 梅花雪树2.0 ---MzTreeView20.rar? 的 未修改的 完整文件
至此问题解决。。。。。hoho。。。仅此记录解决方法。

?

  相关解决方案