jquery扩展返回$ .each混淆

时间:2012-04-19 18:00:26

标签: javascript jquery

我正在尝试使用我遇到的jQuery扩展(handsontable)。我创建表没有问题

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

然而,在我创建表之后,我想调用各种帮助函数,我在javascript中为Handsontable对象声明了这些函数。问题是扩展似乎返回this.each(function() { ... });,我不明白如何从中访问底层Handsontable对象。可以找到here的扩展名的js,我在下面的链接上放了一个小的演示

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

正如您所看到的,当我点击按钮时,我想获取其中一个单元格的数据。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:2)

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

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