【问题标题】:Accessing object properties from within another object (JavaScript / jQuery)从另一个对象(JavaScript / jQuery)中访问对象属性
【发布时间】:2009-11-04 14:12:06
【问题描述】:

我正在尝试从另一个对象中访问配置对象的属性:

var myConfigObj = {
  $myCachedSelector: $('#mySelector')
}

var myObj = {
  $selector: myConfigObj.$myCachedSelector,
  url: 'http://www.someurl.com/somepath'
}

$.each([ myObj, mySecondObj, myThirdObj ], function() {
  this.$selector.load(this.url, function(){
  //do something
}); 

当尝试在每个函数中使用 $selector 时,它返回“未定义”。两个对象在同一个作用域,不知道是什么问题。

【问题讨论】:

  • 请添加更多代码:myConfigObj.$myCachedSelector 是什么(可能未定义)?以及您如何使用myObj.$selector

标签: javascript jquery object properties


【解决方案1】:

这段代码worked well 对我来说已经足够了,还有一些小的调整:

  • 这可能是问题所在:Firefox 抱怨分号,应该是:

    var myConfigObj = {
       $myCachedSelector: $('#mySelector')
    }
    
  • 当然应该是$(document).ready
  • 最后缺少一些});(可能是复制/粘贴)

【讨论】:

  • 您好科比,感谢您的回复。这些都是 c&p 错误 :) 但是代码仍然不适合我。我在 IE 中收到此错误消息:“'this.$selector' is Null or not an object”并且在 FF 中仍然“this.$selector is undefined”...
  • Kobi,我找到了错误的原因:我的代码中隐藏了一个错误的属性名称。我在每个内部还有另一个函数,因此“this”不再指向 dom 对象。 “这”有时会让你有点发疯...... :)
【解决方案2】:
  1. 在 Firefox 中安装 Firebug
  2. 在“脚本”窗格中,在导致错误的行上设置断点;
  3. 在断点处停止时,检查右侧“观察”窗格中的 this
  4. 如果您停止的 this 对象有一个 $selector 属性,该属性有一个 load 方法,那么这不是问题的原因,所以继续循环。
  5. this 对象没有$selector 属性,或者有一个没有load 方法的对象时,你就找到了罪魁祸首。现在找出你为什么将它发送到那个循环,或者你没有初始化它的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多