Я предполагаю, что opt.chartOptions
- это локальная переменная в вашей функции плагина.Если это так, то то, что вы здесь делаете, пытается расширить opt.chartOptions
для каждого из div
в контексте оболочки.
Каждый раз, когда вы выполняете итерацию по расширению (например, * 1006)*), jQuery расширяет foo
со свойствами bar
.Я уверен, что вы знаете об этом.
Что вы, вероятно, упускаете, так это то, что в вашем случае bar
всегда является объектом формы { chart : {} }
.Короче говоря, каждая итерация .each()
перезаписывает предыдущий вызов $.extend()
.
В ходе первой итерации opts.chartOptions
будет расширена на opts.chartOptions.chart
, который вычисляется из первой div
в вашем .each()
контексте.
Во второй итерации вы будете пытаться снова расширить opts.chartOptions
с помощью opts.chartOptions.chart
, , который уже имеет .Но jQuery это не волнует, поэтому он присваивает вторые div
вычисленные значения первым div
в opts.chartOptions.chart
.
И так далее, и так далее.
Несмотря на то, что вы используете его здесь, оно обычно не должно иметь значения, оно имеет значение здесь, потому что вы используете значение opts.chartOptions
в функции обратного вызова вашего AJAX.Это создает замыкание на opts.chartOptions
, что означает, что к моменту срабатывания обратного вызова вашего AJAX его значение может не соответствовать ожидаемому (поскольку оно могло быть изменено другой итерацией .each()
бла-бла).
WHEW !!