2015-08-13 4 views
0

У меня есть следующая функция jquery. Он обновит только первую строку, а затем остановится. Как ни странно, хотя, если я вынимаю линию:JQuery каждая функция работает только один раз

$("#prev_loan_approval_date").html("Not Yet Approved"); 

и заменить его с предупреждением он выстреливает для каждой строки. Есть ли причина, почему это так. Думал, что он не сможет вернуть true на следующей итерации, потому что я изменил текстовое значение, но это было для предыдущей строки, поэтому следующая строка должна вернуть true и изменить значение.

$(document).ready(function() { 
    $('.loan_history_application > tbody > tr').each(function() 
    { 
     if ($("#prev_loan_approval_date").text() == "01/01/1900") 
     { 
      $("#prev_loan_approval_date").html("Not Yet Approved"); 
     }; 
    }); 
+0

Вы можете также показать HTML? – Scott

ответ

2

тр есть ребенок "#prev_loan_approval_date"? Если да, то вы должны написать

$(document).ready(function() { 
    $('.loan_history_application > tbody > tr').each(function() 
    { 
     if ($(this).find("#prev_loan_approval_date").text() == "01/01/1900") 
     { 
      $(this).find("#prev_loan_approval_date").html("Not Yet Approved"); 
     }; 
    }); 
+0

Это не касается того факта, что не должно быть нескольких элементов с тем же ID –

+0

@kiko Это сделало это для меня. Благодарю. Отметьте это как правильное через 4 минуты ... когда это позволит мне. – user3385136

+0

HTML-идентификатор должен быть уникальным для каждой страницы. Это позволяет вам иметь одинаковый идентификатор в каждой строке. Возможно, он работает из-за ошибки браузера, но это неправильно. –

0

Проблема, вероятно, будет использовать идентификатор вместо класса для $("#prev_loan_approval_date").html("Not Yet Approved"); так будет обновлять только первую строку.

Измените это:

$(".prev_loan_approval_date").html("Not Yet Approved"); 

И убедитесь, что вы также изменить идентификатор класса в вашем HTML.

+0

Это не поиск этого элемента в строке –

0

Если у вас несколько элементов с одинаковым идентификатором, это не сработает. Идентификаторы должны быть уникальными. Измените их в класс и изменения в коде:

$(".prev_loan_approval_date").html("Not Yet Approved"); 

Полный код:

$(document).ready(function() { 
    $('.loan_history_application > tbody > tr').each(function() { 
     if ($(this).find(".prev_loan_approval_date").text() == "01/01/1900") 
      $(this).find(".prev_loan_approval_date").html("Not Yet Approved"); 
    }); 
}); 
+0

Это не поиск этого элемента * за строку * –

+0

Полный код находится в вопросе. Если вы хотите, я могу обновить свой ответ с полным. –

+0

@DalHundal Посмотрите сейчас. –

0

Думал он mightnt возвращает истину на следующей итерации, так как я изменил значение текста, но это было в предыдущей строке

Нет, не для предыдущей строки. Здесь несколько вещей не так. Во-первых, тот факт, что вы используете идентификатор для чего-то, что кажется более одного раза (идентификаторы должны быть уникальными). Вы должны использовать класс.

Во-вторых, где вы меняете текст - вы не делать это только для этой строки. Вы всегда делая это на каждые ряд.

$(document).ready(function() { 
$('.loan_history_application > tbody > tr').each(function() { 
    if ($(".prev_loan_approval_date", this).text() == "01/01/1900") 
    { 
     $(".prev_loan_approval_date",this).html("Not Yet Approved"); 
    }; 
}); 

И в вашем изменении HTML id='prev_load_approval_date' в class='prev_loan_approval_date'

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