2014-09-02 31 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