2009-11-04 3 views
0

Я пытаюсь получить доступ к свойствам объекта конфигурации из другого объекта:Доступ к свойствам объекта из другого объекта (JavaScript/JQuery)

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 
}); 

При попытке использовать $ селектор в каждой функции, то она возвращает "undefined". Оба объекта находятся в одной области, и я не знаю, в чем проблема.

+0

Пожалуйста, добавьте еще код: что такое 'myConfigObj. $ MyCachedSelector' (может быть, он не определен)? И как вы используете 'myObj. $ Selector'? – Kobi

+0

Только что обновил код выше – north

ответ

1

Этот код worked well достаточно для меня, с несколькими незначительными твиков:

  • Это, вероятно, проблема: Firefox жалуется на точку с запятой, должны быть:

    var myConfigObj = { 
        $myCachedSelector: $('#mySelector') 
    } 
    
  • Должно быть в $(document).ready, конечно.
  • Missing некоторые }); в конце (вероятно, копировать/вставить вещь)
+0

Привет, Коби, спасибо за ваш ответ. Это были все ошибки c & p :) Но код по-прежнему не работает для меня. Я получаю это сообщение об ошибке в IE: «это». $ Selector »является Null или не является объектом» и все еще «это. $ Selector undefined» в FF ... – north

+0

Коби, я нашел причину ошибок: одно неправильное имя свойства, скрытое в моем коде. У меня также была другая функция внутри каждого, и поэтому «это» больше не указывало на объект dom. «Это» может иногда приводить вас в замешательство ... :) – north

+0

Отлично, спасибо север. Надеялся я помог :) – Kobi

1
  1. Установка Firebug в Firefox;
  2. В панели «Сценарии» установите точку останова на строке, которая вызывает ошибку;
  3. При останове в точке останова проверьте this в правой панели «Часы»;
  4. Если объект this, на котором вы остановились, имеет свойство $selector, которое имеет метод load, то это не является причиной вашей проблемы, поэтому продолжите цикл.
  5. Когда this объекта не имеют $selector свойства, или имеет один, который не имеет метода load, вы обнаружили, что ваш виновник. Теперь выясните, почему вы отправляете его в этот цикл или где вы не можете его инициализировать.