UCML平台中 如何设置列表单元格中的链接失效

解决方案:

找到“a.datagrid-cell-bclink”,麻烦的是这个标记是由js动态加载的,需要等待这个加载完成;等加载完成后,删除a标记“$(“a.datagrid-cell-bclink”).contents().unwrap();”,尝试使用“.unbind('click').removeAttr('onclick')”和“.attr("href","javascript:void(0);")”都不行,前者去掉click事件,测试不起作用,也许是有mousedown吧,没有验证,第二种只是让href失效而已,原来的是“###”,画蛇添足。

 

尝试1

VC_XXX.on("afterrowrender",

   function(){

     $("a.datagrid-cell-bclink").each(function(i){

       $(this) .contents().unwrap();

     });

});

分析:无效,查看了他们的“UCML_JS_ALL.js”这个只是在生成了html后调用,并没有写在append之后。

 

尝试2

$("a.datagrid-cell-bclink").live("click",function(){return false;});

分析:这个只是个挣扎而已,没有作用

  

尝试3

// 在ucml的bpo的“业务初始化”中添加下面的代码

var total = BC_MA_GROUPDATATABLEBase.getRecordCount();//获取前端界面上的记录数

$("a.datagrid-cell-bclink :eq("+(total-1)+")").wait(function(){//一直等待到最后一行的加载

     $("a.datagrid-cell-bclink").each(function(i){

       $(this).contents().unwrap();//去掉节点的a标记

     });

}); 



// 添加一个js文件,并在bpo中引用该js文件

// 等待dom元素加载完成

jQuery.fn.wait = function (func, times, interval) {

  var _times = times || -1, //100次

  _interval = interval || 20, //20毫秒每次

  _self = this,

  _selector = this.selector, //选择器

  _iIntervalID; //定时器id

  if (this.length) { //如果已经获取到了,就直接执行函数

      func && func.call(this);

  } else {

      _iIntervalID = setInterval(function () {

          if (!_times) { //是0就退出

            clearInterval(_iIntervalID);

          }

          _times <= 0 || _times--; //如果是正数就 -- 

          _self = $(_selector); //再次选择

          if (_self.length) { //判断是否取到

            func && func.call(_self);

            clearInterval(_iIntervalID);

          }

      }, _interval);

  }

  return this;

}

分析:无语,到最后还是要自己写方法

 

总结:UCML是个非常戳的平台,不建议开发团队选用,自己开发都好过用这个。

你可能感兴趣的:(表单)