2014-09-02 4 views
0

У меня есть функция jQuery для каждой функции и задана в ней переменная, называемая «last_header», но только если условие переменной «header» не равно null. Проблема, которую я испытываю, - это каждый цикл через каждую функцию, значение переменной «last_header» не сохраняется и устанавливается как неопределенное. Я хочу сохранить значение этой переменной в последний раз, когда она была установлена.Сохранять значение переменной в функции 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' перед тем' .each() ' –

ответ

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

+0

попробуйте дать предупреждение в случае условия. посмотреть, какое значение установлено. –

+0

Он работает по назначению. Отображается правильное значение, но только если заголовок не равен NULL. – markwilliamsweb

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

+0

Другие решения также будут работать, просто измените это, если условие 'if (header! == undefined) {' и попробуйте. :) –

Смежные вопросы