使用 Gridster 添加网格时出现 Javascript 错误

标签 javascript jquery gridster

$(function ($) {

    var gridster;
    widget_base_width: 240;
    widget_base_height: 240;
    widget_margin_h: 10;
    widget_margin_v: 10;
    gridActive: false;

    this.gridster = $('.gridster ul').gridster({
        widget_margins         : [this.widget_margin_h, this.widget_margin_v],
        widget_base_dimensions : [this.widget_base_width, this.widget_base_height],
        helper                 : 'clone',
        draggable              : {}
    }).data('gridster');

    $(".chart-button").click(function () {
        this.gridster.add_widget('<li id="hideil"><div id="test">heloooooo</div></li>');
    });

});

我正在使用此代码通过 gridster 添加图 block ,但我收到错误消息:

Uncaught TypeError: Cannot read property 'add_widget' of undefined
(anonymous function)
x.event.dispatch jquery-1.10.2.min.js:22
v.handle jquery-1.10.2.min.js:22

最佳答案

点击处理程序的

this 对象与其外部的 this 对象不同。上下文不同:在处理程序内 this 对象指向 $('.chart-button')。您可以在处理程序外部定义一个变量并使用它:

var gridster = $('.gridster ul').gridster(...).data('gridster');

$(".chart-button").click(function () {
    gridster.add_widget('<li id="hideil"><div id="test">heloooooo</div></li>');
});

或者您可以将this(覆盖处理程序的上下文)绑定(bind)到处理程序:

this.gridster = $('.gridster ul').gridster(...).data('gridster');

$(".chart-button").click(function () {
    gridster.add_widget('<li id="hideil"><div id="test">heloooooo</div></li>');
}.bind(this));

关于使用 Gridster 添加网格时出现 Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870075/

相关文章:

javascript - 使用 JQuery 根据另一个 DIV 中文本的长度修改 DIV

javascript - 如何最好地在 JavaScript 中实现输出参数?

javascript - 将每个里给出的时间与当前时间进行比较

javascript - 与 jQuery 相比,新的 oData javascript 库(来自 MSFT)

javascript - 如何在矩形的底部svg JS中绘制圆 Angular

javascript - 如何同时模拟多个按键事件

javascript - 当用户单击图像时,如何使用 JavaScript 或 jQuery 读取图像的像素?

javascript - 将一个 HTML 元素 (div) 放置在另一个 HTML 元素 (li) 上

javascript - 如何禁止gridster向下移动小部件元素

javascript - Gridster 没有在我想要的地方添加小部件