jqGrid:列调整大小触发单击事件

时间:2012-07-03 14:09:31

标签: javascript jquery jquery-ui jqgrid

首先,这些是我目前使用的版本:

  • jqGrid 4.3.2,修复了Chrome(由jqGrid does not render correctly in Chrome/Chrome Frame中的“Oleg”发布)。由于某种原因4.3.2和4.4.0没有解决我的宽度问题,如帖子中所述。除了Chrome之外,IE中还出现了这个问题。

  • jQuery 1.7.2

  • jQuery UI 1.8.9

我遇到的问题是当我尝试通过拖动鼠标来调整网格中的一个列时,当我放开鼠标按钮时,似乎触发了分隔符左侧标题上的click事件。然后,此事件会触发行的重新排序,因此它不是很好。

它只发生在IE(9)中,它在Firefox和Chrome中运行良好。

我认为这很奇怪,因为我没有找到任何描述jqgrid相同问题的人,而且我认为我没有做任何可能会造成这种行为的“黑客”。

希望有人能指出我在这方向。

1 个答案:

答案 0 :(得分:0)

我没有确切地找到问题的根本原因,但设法通过在列调整大小操作上的mouseup事件之后暂停jqgrid中的click处理程序10毫秒来解决它。点击处理程序已经检查了一个名为ts.p.disableClick的变量,所以我想我也可以使用这个。我唯一需要改变的是:

 $(document).mouseup(function () {
    if (grid.resizing) { grid.dragEnd(); return false;}
    return true;
 });

,对此:

 $(document).mouseup(function () {
        if (grid.resizing) {

            // Disabling the click handler for 10 millisec.
            ts.p.disableClick = true;
            setTimeout(function() {
                 ts.p.disableClick = false;
            }, 10);

            grid.dragEnd(); return false;
        }
    return true;
 });

您可以将其称为hack,但暂停点击处理程序仅10 ms不应以任何方式影响用户,因此我认为它应该是安全的。

希望如果有人遇到类似的问题,这可能会有所帮助。