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是个非常戳的平台,不建议开发团队选用,自己开发都好过用这个。
欢迎在评论区留下你宝贵的意见,不论好坏都是我前进的动力(cnblogs 排名提升)!
如果喜欢,记得点赞、推荐、关注、收藏、转发 ... ;)

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号