由於某種原因,我調用嵌套的jQuery.each()函數正在失去一些變量的作用域,但不是其他變量。在下面的代碼中,Client.KNE參考起作用,但ClientDiv不起作用,即使在此之前,它們都是已定義的,已填充的變量...Jquery .each()範圍問題(bug?)
通過將Client和ClientDiv切換到全局變量,我覺得我不應該在這裏創建全局變量...
不起作用:
jQuery.each(Messages.Additions, function (clientIndex) {
var Client = Messages.Additions[clientIndex];
var ClientDiv = $("#clientTitle_" + Client.ClientID);
if (ClientDiv.length == 0) {
$("#ClientTemplate").tmpl(Client).appendTo("#ClientContainer");
} else {
jQuery.each(Client.KNE, function (kneIndex) {
var KNE = Client.KNE[kneIndex]; // Works
var KNEDiv = ClientDiv.find("#kneTitle_" + KNE.KNE); // DOES NOT WORK
不工作:
jQuery.each(Messages.Additions, function (clientIndex) {
Client = Messages.Additions[clientIndex];
ClientDiv = $("#clientTitle_" + Client.ClientID);
if (ClientDiv.length == 0) {
$("#ClientTemplate").tmpl(Client).appendTo("#ClientContainer");
} else {
jQuery.each(Client.KNE, function (kneIndex) {
KNE = Client.KNE[kneIndex]; // Works
KNEDiv = ClientDiv.find("#kneTitle_" + KNE.KNE); // Works
任何人都知道我是什麼在第一版中做錯了?或者這是一個錯誤?爲什麼一個變量工作,但另一個不...
從這裏:Jquery $().each method obscures 'this' keyword它看起來像我可以傳遞變量到函數調用,但我應該嗎?
試過上面的鏈接,並且它不工作:
jQuery.each(Messages.Additions, function (clientIndex) {
var Client = Messages.Additions[clientIndex];
var ClientDiv = $("#clientTitle_" + Client.ClientID);
if (ClientDiv.length == 0) {
$("#ClientTemplate").tmpl(Client).appendTo("#ClientContainer");
} else {
jQuery.each(Client.KNE, function (kneIndex, Client, ClientDiv) {
var KNE = Client.KNE[kneIndex];
var KNEDiv = ClientDiv.find("#kneTitle_" + KNE.KNE); //Does not work - ClientDiv undefined
類似的問題沒有滿意的答案: Scope of jQuery each() function?
SOLUTION
$.each(Messages.Additions, function() {
var $Client = this;
var $ClientDiv = $("#clientTitle_" + $Client.ClientID);
if (!$ClientDiv.length) {
$("#ClientTemplate").tmpl($Client).appendTo("#ClientContainer");
} else {
$.each($Client.KNE, function() {
var $KNE = this;
var $KNEDiv = $ClientDiv.find("#kneTitle_" + jq($KNE.KNE));
// SWITCHED TO $ PREFIX
不應該是「.find()」與一個小寫的f? – Blazemonger
好的,我發佈它後,我確實在這裏修正了我的代碼。不幸的是,這不是我的問題的原因,雖然;-) –
請閱讀「**當問一個JavaScript的問題,你應該**」部分[這裏](http://stackoverflow.com/tags/javascript/info) – thorn