如何禁用NonFactors.Grid.Mvc5表头点击排序,仅点击排序按钮触发排序?
解决方案
你的stopPropagation不生效是因为NonFactors.Grid.Mvc5的排序事件默认直接绑定在表头<th>元素上,普通的事件冒泡阻止没法拦截同元素上先绑定的库原生事件,可通过以下两种方案实现需求:
方案1:JS拦截非排序按钮区域的点击
使用stopImmediatePropagation直接拦截上非排序按钮触发的点击事件,优先级高于库的原生排序事件:
// 匹配目标列表头,也可通过自定义类名匹配更精准 $('th:contains("Application")').on('click', function(e) { // 仅当点击目标不是排序按钮/排序按钮子元素时拦截事件 if (!$(e.target).closest('.grid-sort').length) { e.stopImmediatePropagation(); e.preventDefault(); } });
方案2:CSS禁用非排序按钮区域的点击响应(更简单)
先给目标列配置自定义CSS类:
columns.Add(model => model.ApplicationName) .Titled("Application") .Filterable(true) .Sortable(true) .Css("app-name-column"); // 新增自定义列类
再添加对应的CSS规则,仅允许排序按钮接收点击事件:
th.app-name-column *:not(.grid-sort) { pointer-events: none; }
内容的提问来源于stack exchange,提问作者LizardKingLK
相关产品推荐
相关产品推荐

