根据排序或不更改光标样式

时间:2011-04-12 18:16:41

标签: javascript jquery html jqgrid

我正在使用jqGrid并且有3列无法排序。此时,当用户将鼠标悬停在标题上时,无论排序设置为true还是false,光标都会变为手形。我希望那个光标不是那些列头上的手(文本或指针)。用这种方式让用户感到困惑。这是可以设置的吗?

谢谢, 标记

4 个答案:

答案 0 :(得分:17)

我发现问题非常好。所以来自我的+1。

您不是第一个希望在不可排序的列上使用另一个游标的人(而不是最后一个)。遗憾的是,jqGrid不会为您提供类或其他一些简单的属性,可用于查找可以设置CSS“cursor:default”的元素。

所以我建议使用以下代码执行此操作:

var myGrid = $("#list");

// create the grid
myGrid.jqGrid({
  // all jqGrid parameters
});

// fix cursor on non-sortable columns
var cm = myGrid[0].p.colModel;
$.each(myGrid[0].grid.headers, function(index, value) {
    var cmi = cm[index], colName = cmi.name;
    if(!cmi.sortable && colName!=='rn' && colName!=='cb' && colName!=='subgrid') {
        $('div.ui-jqgrid-sortable',value.el).css({cursor:"default"});
    }
});

您可以在the demo直播上看到该方法有效。在演示中,最后一列“Notes”是不可排序的。

如果这种行为在jqGrid的下一个版本中是标准的,那将是很好的。我将尝试找时间并写出建议,应该更改jqGrid代码中的内容,使其成为开箱即用的行为。

更新free jqGrid 4.8中不存在光标在不可排序列上的问题。

答案 1 :(得分:1)

欢迎来到SO。

绝对。 CSS:

th.unsortableclass {
cursor: default;
}

现在将该类应用于不可排序的列标题。

答案 2 :(得分:1)

奥列格的例子运作得很好但我有一个请求,如果列是可排序的,总是显示箭头。我知道我在评论,但认为有些人可能会有同样的要求。

所以我把它添加到他的循环中:

jQuery('span.s-ico',value.el).remove();

然后他的代码运行:

jQuery(".s-ico").show();

然后将其添加到我的网格创建:

onSortCol:function(index, iCol, sortorder){
    // redisplay all arrows
    jQuery(".s-ico").show();
}

答案 3 :(得分:-1)

$("jquery selector to pick only non-sorted columns").css("cursor", "default");