2012-04-19 70 views
0

我想使用我碰到的jQuery扩展(handsontable)。我有没有问题,在创建表

var spreadsheet = $("#dataTable").handsontable({ 
      rows: 3, 
      cols: 15, 
      minSpareRows: 2 
}); 

但是我创造我想要调用各种辅助功能我看到在JavaScript的Handsontable对象申报表后。问题是扩展似乎返回this.each(function() { ... });,我不明白我如何可以从这访问下层Handsontable对象。为扩展名的JS可以发现here,我把一个小的演示一起以下链接

http://jsfiddle.net/7JTG2/7/

上,你可以看到,我想获得的一个细胞的数据,当我点击一个按钮。

+0

看来你的'spreadsheet'变量没有'grid'成员(未定义)。 – 2012-04-19 18:17:19

+0

我将不得不建议不要使用此功能。只要看看http://datatables.net/,不要回头。 – Ohgodwhy 2012-04-19 18:23:43

+0

@Ohgodwhy我只想要一个简单的可编辑网格,而不是多余的额外功能。这似乎提供了。伊兰我知道这一点,jsFiddle是我想做的,而不是我能做的。 – Danny 2012-04-19 18:44:25

回答

2

相关的代码是在末尾:

$.fn.handsontable = function (action, options) { 
    if (typeof action !== 'string') { //init 
     options = action; 
     return this.each(function() { 
      if($(this).data("handsontable")) { 
       instance = $(this).data("handsontable"); 
       ... 
      } else { 
        ... 
       instance = new Handsontable($(this), currentSettings); 
       $(this).data("handsontable", instance); 
      } 
     }); 
    } 
} 

这意味着,该代码将Handsontable实例作为数据属性的元素(和返回所选择的组为环连接)。有一个元素,你可以很容易地用instance = $el.data("handsontable")来提取它。如果你有一组元素,你需要循环它 - 例如与each()

+0

谢谢,我显然没有看到足够的功能,因为我应该。解决了我的问题。 – Danny 2012-04-19 18:47:11

+0

请参阅由jmm解决方案,这是更好的方法(使用onChange方法) – warpech 2012-08-09 15:23:54

2

看起来你可以使用插件的onChange方法来每次自动输入数据时捕获数据。不需要按钮。一个简单的例子添加到上面的代码。

onChange: function(data) { 
      $("#data").append(JSON.stringify(data)); 
      } 
+0

我是插件的作者,我可以证实这是正确的方法。谢谢你们的兴趣! – warpech 2012-05-20 13:05:49