You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:33:21