【问题标题】:Jquery function on object's property via this对象属性上的 Jquery 函数通过 this
【发布时间】:2015-06-20 18:58:22
【问题描述】:

我有一个对象:

var obj = { id: $('#f_view') };

我有一个函数:

function switchFrom(trigger) {
          trigger.id.click(function() {
                 this.id.toggleClass('class');
          });
};

当我运行函数时:

switchFrom(obj);

我明白了:

undefined is not a function (evaluating'this.id.toggleClass('class')')

当我明确引用元素时,该函数起作用。

$('#f_view').toggleClass('class');

我做错了什么?感谢您的宝贵时间。

【问题讨论】:

  • id 在您的情况下是一个非常糟糕的变量名。应该类似于$ele
  • trigger.id.toggleClass('class'); 是您想要做的。不过下面的答案可能更好
  • @StephenBugsKamenar ,这种方式有效,谢谢。我只是想知道this 参考是否可以做同样的事情。

标签: javascript jquery object this


【解决方案1】:

你需要通过包裹$(...)like来转换​​成jQuery对象

function switchFrom(trigger) {
         trigger.id.click(function() {
                 $(this).toggleClass('class');
          });
}

这是因为原生 javascript 对象无法访问 jQuery 方法

【讨论】:

  • 当我将对象设置为:var obj = { id: $('#f_view') }; 而我这样做时:$(this).toggleClass('class'); 我仍然遇到同样的错误。
  • 对不起,我忘了删除 .id 对对象属性的引用。您的解决方案有效。
  • 附带说明,如果你想让this内部函数引用对象,你需要call()方法(或使用apply()):jsfiddle.net/qz4odfj8/2
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多