【问题标题】:Object method as jqGrid callback对象方法作为 jqGrid 回调
【发布时间】:2011-10-14 09:46:14
【问题描述】:

我有一个对象,它有一个方法,我想成为网格中的回调。我该怎么做?

无效的示例代码:

var GridHolder = function() {
    //...
    this.lastSel = null;
    //...
};
GridHolder.prototype = {
   //...
    someAction : function(id){ /*doSomeWork();*/},
    rowSelect : function(id){
        this.someAction(id); // failed
        if(id && id !== this.lastSel){
            jQuery('#grid_id').restoreRow(this.lastSel);
            this.lastSel=id;
        }
        jQuery('#grid_id').editRow(id, true);
    }
   //...
};
var gridHolder = new GridHolder();
jQuery('#grid_id').jqGrid({
    //...
    onSelectRow: gridHolder.rowSelect,
    //...
});

现在 jqGrid 用 'call' 调用回调,在方法中用 'this' 代替。

即:

if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow.call($t, pt.id , stat); } // this === $t in callback instead of gridHolder

【问题讨论】:

    标签: javascript methods jqgrid callback


    【解决方案1】:
    var gridHolder = new GridHolder();
    jQuery('#grid_id').jqGrid({
        //...
        onSelectRow: function(id) { gridHolder.rowSelect(id); },
        //...
    });
    

    应该在正确的上下文中执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 2014-11-13
      • 2021-03-06
      相关资源
      最近更新 更多