为什么jQuery没有返回最近的表行值?

问题描述 投票:0回答:1

我一直试图通过jQuery从表行获取数据,但它什么也没有返回。我环顾四周寻找多个教程,但没有找到任何可以帮助我的东西。

这是我的代码:

jQuery的:

function markAsRead(checkbox) {
    if (checkbox.checked) {
        var current_row = $('#msg-table').closest("tr");

        var column1 = current_row.find("td:eq(0)").text();
        var column2 = current_row.find("td:eq(1)").text();
        var column3 = current_row.find("td:eq(2)").text();
        var column4 = current_row.find("td:eq(3)").text();

        var data = column1 + " " + column2 + " " + column3 + " " + column4;

        console.log(data);
    } else {
        return;
    } 
}

php和html:

<table class="w3-table-all" id="msg-table">
    <thead>
        <tr>
            <th>From</th>
            <th>Subject</th>
            <th>Message</th>
            <th>Date Sent</th>
            <th></th>
        </tr>
        </thead>


        <?php 
            foreach ($this->paginator as $value):
                if ($value->active == 1):
        ?>
            <tr class="w3-hover-text-red w3-text-black">
                <td>
                    <b><?php echo $value->from; ?></b>
                </td>

                <td>
                    <b><?php echo $value->subject; ?></b>
                </td>

                <td>
                    <b><?php echo $value->message; ?></b>
                </td>

                <td>
                    <b><?php echo $value->date_sent; ?></b>
                </td>

                <td>
                    <input type="checkbox" class="w3-check" onchange='markAsRead(this);' id="<?php echo $value->id; ?>">&nbsp; Mark As Read
                </td>
            </tr>
            <?php else: ?>
                <tr class="w3-hover-text-red w3-text-black">

                    <td>
                    <?php echo $value->from; ?> 
                    </td>

                    <td>
                    <?php echo $value->subject; ?>
                    </td>

                    <td>
                        <?php echo $value->message; ?>
                    </td>

                    <td>
                        <?php echo $value->date_sent; ?>
                    </td>   

                    <td>
                        <input type="checkbox" class="w3-check" onchange='markAsUnread(this);' id="<?php echo $value->id; ?>">&nbsp; Mark As Unread
                    </td>                           
                </tr>
                <?php 
                       endif;
                       endforeach;
                ?>
</table>

这里是我遇到的问题的一些截图:

enter image description here

enter image description here

任何帮助将不胜感激,因为我已经坚持这个问题几天,并想弄清楚如何解决它。

jquery
1个回答
2
投票

使用$(checkbox).closest("tr");找到tr父级och复选框

function markAsRead(checkbox) {
    console.clear();
    if (checkbox.checked) {
        var current_row = $(checkbox).closest("tr");

        var column1 = current_row.find("td:eq(0)").text();
        var column2 = current_row.find("td:eq(1)").text();
        var column3 = current_row.find("td:eq(2)").text();
        var column4 = current_row.find("td:eq(3)").text();

        var data = column1 + " " + column2 + " " + column3 + " " + column4;

        console.log(data);
    } else {
        return;
    } 
}
© www.soinside.com 2019 - 2024. All rights reserved.