升级Kendo UI for jQuery v2014.3.1314至v2024.1.319后行选择问题求助
解决Kendo UI for jQuery Grid升级后行选中状态判断失效问题
从v2014.3.1314到v2024.1.319的大版本跨度中,Kendo UI调整了Grid选中行的DOM标记逻辑,旧版本依赖的aria-selected属性和k-state-selected类已不再用于标识选中状态,导致你的判断代码失效。以下是几种可靠的解决方案:
方案1:使用Grid官方API判断选中状态(推荐)
直接通过Grid实例的select()方法获取所有选中行,再判断当前行是否在选中集合内,这种方式不依赖DOM结构,版本兼容性更好:
var row = $(this).closest("tr"), grid = $("#your-grid-id").data("kendoGrid"), // 替换为你的Grid容器ID isSelected = grid.select().filter(row).length > 0;
方案2:通过选中数据项集合判断
如果需要结合数据项判断,可使用selectedDataItems()方法获取所有选中的数据项,再匹配当前行对应的数据项:
var row = $(this).closest("tr"), grid = $("#your-grid-id").data("kendoGrid"), dataItem = grid.dataItem(row), selectedItems = grid.selectedDataItems(), // 替换为你的数据项唯一标识字段(如id、uid) isSelected = selectedItems.some(item => item.uid === dataItem.uid);
方案3:适配新版DOM标记(不推荐,依赖DOM结构)
若坚持通过DOM判断,新版Grid选中行使用k-selected类,且aria-selected属性需用prop()而非attr()获取(因为attr()仅读取初始HTML属性值,prop()读取当前DOM状态):
var row = $(this).closest("tr"), isSelected = row.prop('aria-selected'), // 用prop代替attr isClass = row.hasClass('k-selected'); // 新版类名改为k-selected
建议优先使用方案1或方案2,避免后续版本迭代再次出现类似问题。
内容的提问来源于stack exchange,提问作者ARJUN PATEL
相关产品推荐
相关产品推荐

