Jquery每个函数只工作一次

时间:2015-08-13 09:59:45

标签: javascript 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");
        };
    });

4 个答案:

答案 0 :(得分:2)

tr有一个孩子“#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");
        };
    });

答案 1 :(得分:0)

问题可能是您使用ID代替$("#prev_loan_approval_date").html("Not Yet Approved");的类,因此它只会更新第一行。

将其更改为:

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

并确保您还在HTML中将ID更改为类。

答案 2 :(得分:0)

如果您有多个具有相同ID的项目,则无效。 ID应该是唯一的。将它们更改为类并更改代码:

$(".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");
    });
});

答案 3 :(得分:0)

  

认为它在下一次迭代中无法返回true,因为我更改了文本值,但这是前一行

不,前一行的不是。这里有几个问题。首先,您使用ID似乎不止一次出现的事实(ID必须是唯一的)。你应该使用一个类。

其次,在您更改文本的位置 - 您仅为该行执行此操作。您总是每个行上执行此操作。

$(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'