如何仅通过aria-describedby属性定位元素并修改其显示值
jqGrid 修改指定布尔列显示值方案
针对你要修改aria-describedby="GridMaksajumi_BezApmaksas"单元格true/false显示的需求,有两种可落地的实现方式,根据场景选择即可:
方案1:列配置格式化(推荐,永久生效)
这是jqGrid官方推荐的做法,直接在列定义阶段指定渲染规则,后续翻页、排序、重载数据、新增行都会自动按规则渲染,不会出现改完又变回true/false的问题。
找到初始化jqGrid时的colModel配置项,定位到name为BezApmaksas的列,添加formatter格式化函数即可:
$("#GridMaksajumi").jqGrid({ // 原有的url、datatype等其他配置全部保留 colModel: [ // 其他列的配置保持不变... { name: 'BezApmaksas', index: 'BezApmaksas', // 保留该列原有的width、align等配置,新增下面的格式化逻辑 formatter: function (cellValue) { // 这里自定义要显示的文本,比如替换成"是/否"、"无需付款/需付款"都可以 return cellValue ? "是" : "否"; } }, // 其他列的配置保持不变... ] })
配置完成后执行一次网格重载$("#GridMaksajumi").trigger("reloadGrid")就能看到所有行的该列都按新规则显示了。
方案2:直接修改当前渲染的DOM(临时生效)
如果你只是临时改当前页已经渲染出来的内容,不想动网格初始化配置,可以直接用jQuery属性选择器抓取所有目标单元格遍历修改:
// 抓取所有目标列的单元格 $('#GridMaksajumi td[aria-describedby="GridMaksajumi_BezApmaksas"]').each(function () { const rawVal = $(this).text().trim(); const displayText = rawVal === 'true' ? "是" : "否"; // 修改单元格显示内容 $(this).text(displayText); // 同步修改title属性,避免鼠标悬浮时还是显示原始的true/false $(this).attr('title', displayText); })
注意:这个方案只会修改当前页面已经加载出来的单元格,一旦触发翻页、网格重载、排序、新增行操作,修改就会被jqGrid默认渲染逻辑覆盖,需要重新执行这段代码。如果需要长期生效请优先选择方案1。
内容的提问来源于stack exchange,提问作者Renārs Abeļūns
相关产品推荐
相关产品推荐

