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