我有一个jQuery的每个函数,并设置一个名为' last_header'的变量。在它里面,但只有当变量的条件称为“标题”时才会出现。不是空的。我遇到的问题是每个函数的每个循环,' last_header'变量值未被保留并设置为未定义。我希望在上次设置时保留该变量的值。
$('#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 :(得分: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 强>
答案 1 :(得分: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
});
希望这会有所帮助:)
答案 2 :(得分: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
回调函数,因此变量在循环外不可用。