JavaScript似乎只是在MouseMove之后做出反应

时间:2013-07-04 14:28:17

标签: javascript jquery dom infragistics

可能是我见过的最糟糕的事情:我想在加载文档后加载网格。由于网格(infragistics)似乎延迟了,我设置了一个间隔,在我尝试获取所需元素的区间内,如果我找不到它,我再等500毫秒:

    function trySetEditMode(obj) {
        var testObj = $('#' + obj.btnId).parents("tr[type='row']").get(0);

        if (testObj && testObj._object){
            clearInterval(_intervalId);

有趣的是:即使我看到使用IE调试工具的行也在那里,它只是找到它。当我用鼠标移动时它就可以工作了。这种效果似乎是完全随机的。

有谁知道这是怎么可能的?我试着用.focus,.blur等修补arorund,但似乎没什么用。

btw:obj是我的自定义对象,按钮id是按钮的clientid并且在那里。例如:

$('#' + obj.btnId).parents('tr').length

返回一个长度。

这可能是来自infragistics控件的错误吗?如果是,我怎么能模拟这个mouseMove?

祝你好运

的Matthias

2 个答案:

答案 0 :(得分:1)

在客户端上创建行对象的成本很高,因此它们是按需创建的,以避免在最初创建所有行对象时产生大的性能损失。鼠标悬停或使用作为client side object model的一部分提供的get_row()方法时,实际创建这些对象。因此,推荐的方法是使用客户端对象模型来获取对行的引用,例如以下将获得第一行:

var grid = $find("webDataGrid1");  

var row = grid.get_rows().get_row(0);

答案 1 :(得分:0)

也许有人会在infragistics webdatagrid中出现这个问题: 旁注:我不相信ig支持无法告诉我: Grid有点lazyLoaded,dom被加载但是当你用鼠标移动时,ig相关的属性和后面的对象才被加载。所以我等了多久并没有关系,对象不在那里。

由于我没有时间得到正确的解决方案,我基本上手动将鼠标悬停在单元格上的事件上。你做了什么并不重要,但我用第一个测试它并且它正常工作。

            //The grid doesnt load data (except the first row) until the mouse did hover over it
            //Get a cell, and hover over it
            var parentTd = btn.parents('td').first();
            var cell = parentTd.siblings()[0];
            var rows = $find('dgrRoles').get_rows();
            if (cell && rows) {
                cell.target = cell;
                rows._onMouseOver(cell);
            }