2014-09-02 32 views
0

我有一個jQuery每個函數,並在其中設置一個名爲'last_header'的變量,但前提是變量名稱'header'的條件不爲null。我遇到的問題是通過每個函數的每個循環,'last_header'變量值不會被保留,並且被設置爲undefined。我想在最後一次設置時保留該變量的值。保留jQuery中的變量值.each()函數

$('#hidden_specs_' + i + ' tr').each(function() { 
    var header = $(this).find('th').html(); 
    if (header !== null) { 
     var last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH 
    } 
    alert(last_header); //THIS RETURNS UNDEFINED UNLESS IT HAS BEEN SET IN THIS LOOP 

}); 

我希望有道理嗎?

任何幫助真的不勝感激。

非常感謝, 馬克

+0

把'變種last_header'之前'。每()' – 2014-09-02 10:41:44

回答

1

這是因爲變量的範圍不存在。您需要在每個循環外將變量設置爲全局變量。是這樣的:

var last_header = ""; 
$('#hidden_specs_' + i + ' tr').each(function() { 
var header = $(this).find('th').html(); 
if (header !== null) { 
    last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH 
} 
alert(last_header); 
}); 

WORKING DEMO

+0

感謝您的快速反應Milind。是的,我以前曾嘗試過,但沒有奏效。我已經嘗試了一次,但我仍然沒有定義last_header變量。 – markwilliamsweb 2014-09-02 10:45:37

+0

嘗試給予警報,如果條件。看看設置了什麼值。 – 2014-09-02 10:46:57

+0

它按預期工作。顯示正確的值,但僅當標頭不爲空時才顯示。 – markwilliamsweb 2014-09-02 10:52:42

0

您需要聲明循環

//declare the variable outside the loop 
var last_header; 
$('#hidden_specs_' + i + ' tr').each(function() { 
    var header = $(this).find('th').html(); 
    if (header !== null) { 
     last_header = $.trim(header); //THIS IS THE VARIABLE I WANT TO RETAIN ON THE NEXT LOOP THROUGH 
    } 
    alert(last_header); //THIS RETURNS UNDEFINED UNLESS IT HAS BEEN SET IN THIS LOOP 

}); 
alert(last_header); 

在你的情況以外的變量,該變量的範圍僅限於這樣的each回調函數變量在循環之外將不可用。

1

您可以使用HTML5自定義屬性來實現該功能。我有如下更新您的代碼:

$('#hidden_specs_' + i + ' tr').each(function() { 
var header = $(this).find('th').html(); 
if (header !== null) { 
    var last_header = $.trim(header); 
    $("body").data("last_header",$.trim(header)); // but if your condition satisfies then the value will be overridden. 
} 

alert($("body").data("last_header")); //THIS IS THE LINE WHICH WILL GIVE YOUR LAST SET VALUE 
}); 

希望這有助於:)

+0

超級,這個作品非常感謝你。我不明白爲什麼提供的其他方法不起作用。 – markwilliamsweb 2014-09-02 11:16:43

+0

其他解決方案也將工作,只要改變,如果條件'if(header!== undefined){'並嘗試。 :) – 2014-09-02 11:25:04