javascript - jquery prev() 返回 undef

标签 javascript jquery html

通过 JSON 接收数据并在表上添加内容后,使用事件委托(delegate)来捕获该内容的链接,但是当您单击动态创建的链接时想要访问 prev() 包含的 tr 元素数据 ID。但这是我回来的undef。有人能帮我吗? prev() 正在被 editarComercial() 调用

Javascript:

$(document).ready(function(){

    function editarComercial(trthis) {
        alert($(trthis).prev().prev().data('id'));
    }

    function listaComercial(){

        url = BASE_URL + 'comercial/ajaxrequest/listagem';

        $.getJSON(url,function(data){

            var trs = [];
            $.each(data,function (key){

                tr = "<tr data-id=\""+data[key].id+"\">";
                tr += "<td>"+data[key].nome+"</td>";
                tr += "<td><a href=\"javascript:void(0);\" class=\"edit-comercial\">Editar</a>";
                tr += "<a href=\"javascript:void(0);\" class=\"del-comercial\">Excluir</a></td>";
                tr += "</tr>";

               trs.push(tr);
            });
            $("<tbody/>",{
                html: trs.join("")
            }).appendTo("#listagemComercial");
        });

    }

    $(document).on('click','a.edit-comercial',function(){
        editarComercial(this);
    });

    listaComercial();
 });

HTML:

    <div id="content">
    <table id="listagemComercial">
        <thead>
            <tr>
                <th>Nome</th>
                <th>Ações</th>
            </tr>
        </thead>
    </table>
</div>

最佳答案

.edit-comercial 没有前一个元素,它是 TD 中的第一个元素。

您可能需要 closest() 来遍历到该行

function editarComercial(trthis) {
    alert( $(trthis).closest('tr').data('id') );
}

关于javascript - jquery prev() 返回 undef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143999/

相关文章:

javascript - 创建多个图像 slider

html - 如何在 CSS 中实现负填充?

javascript - 使用 mocha js 测试依赖于上一个异步函数的异步函数

javascript - Vue.js 和 Immutable.js

javascript - 如何使这个 javascript async while 循环工作?

javascript - 为什么触发 F11 按下事件不起作用?

jquery:尝试将图像变成超链接

javascript - 选择的数据不正确

javascript - Google Plus One 按钮后端错误 -32099

javascript - <select> 标签中的列结构