【问题标题】:Using 'this' and a JQuery function inside object callback在对象回调中使用“this”和 JQuery 函数
【发布时间】:2014-06-23 18:51:20
【问题描述】:

我创建了一个对象,但无法通过该回调更新元素。下面是一些简短的示例代码:

function myObj() {
    LINK_ID = '';
    PREFIX = '';
};

myObj.prototype.init = function(config)
{
    LINK_ID = config.link_id;
    PREFIX = config.prefix;

    $(this.LINK_ID).click($.proxy(this, 'swapState'));
};

myObj.prototype.swapState = function()
{
    $(this.PREFIX).toggleclass(this.PREFIX + "_toggled");  // Errors here
};

var m = new MyObj();
m.init({link_id: "#linky", prefix: "#mydiv"});

我在以切换类为特色的行上收到“未捕获的类型错误:未定义不是函数”错误。我可以在该函数的范围内看到 this.PREFIX 的值,但由于某种原因,它不允许我调用 toggleclass。

有什么线索吗?

谢谢。

【问题讨论】:

  • 您的 LINK_IDPREFIX 变量被设置为 global 变量!
  • toggleClass 大写为C。此外,'#mydiv_toggled' 不是有效的类名。
  • 啊!那就是火箭。谢谢。我从其他地方复制了这段代码,并没有考虑检查语法。

标签: javascript jquery function callback this


【解决方案1】:

应该是:

$(this.PREFIX).toggleClass(this.PREFIX + "_toggled");

并且,确保您定义了 xxx_toggled 类。

【讨论】:

  • 代码中的错误远不止这些。
  • 是的,但具体错误的原因是问题。
猜你喜欢
  • 2012-01-02
  • 2019-05-19
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多