在'mouseenter'触发后行无效时,不会触发SlickGrid'mouseleave'事件

时间:2014-06-05 03:00:04

标签: slickgrid

我有一个slickgrid,在'onMouseEnter'事件中,我执行以下操作:

  • 更改相关行的基础css
  • 调用grid.invalidateRow()
  • 调用grid.render()

后两个调用对于反映新的css类是必要的。然而,我需要捕获onMouseLeave事件,当我将鼠标从单元格(或行)移开时它不会被触发,大概是因为对invalidate / render的调用在我的鼠标下放置了一个新的DOM元素,而且它是不再是我最初“进入”的那个。

所以我有两个问题:

  1. 是否有其他方法可以在不调用invalidateRow / render的情况下呈现给定单元格的新css类?
  2. 如果没有,是否有其他方法可以执行此操作并仍然触发了onMouseLeave事件?

1 个答案:

答案 0 :(得分:1)

一种选择是使用setCellCssStyles功能。

grid.onMouseEnter.subscribe(function(e, args){
    var cell = grid.getCellFromEvent(e),
        param = {},
        columnCss = {};

      for(index in columns){
          var id = columns[index].id;
          columnCss[id] = 'my_highlighter_style'
      }
      param[cell.row] = columnCss
      args.grid.setCellCssStyles("row_highlighter", param);
  })

因此,上述内容会更改已被moused进入的background-color的每个单元格的row。在my fiddle中,mouseLeave订阅会执行一个简单的console.log,以确保它仍在触发。


修改修复了小提琴中的外部资源使用情况以获得跨浏览器支持

相关问题