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是个非常戳的平台,不建议开发团队选用,自己开发都好过用这个。

原文地址:https://www.cnblogs.com/smallidea/p/3624346.html