javascript - 在附加到动态内容中的元素之前删除最后一个 TD

标签 javascript jquery html

我有这段代码,其中内容是动态生成的,并且每次 SELECT 更改其值时都会执行它:

var htmlFabricanteBody = '',
    htmlSelFabricanteBody;

htmlFabricanteBody += '<tr data-idproductosolicitud="' + data.ent.idProductoSolicitud + '" data-id="' + data.ent.id + '">';
htmlFabricanteBody += '<td><input type="checkbox" name="fabLinkChoice[]" value="' + data.ent.idProductoSolicitud + '"></td>';
htmlFabricanteBody += '<td>' + data.ent.nombre + '</td>';
htmlFabricanteBody += '<td>' + data.ent.direccion + '</td>';
htmlFabricanteBody += '<td class="has_pais fabTd-' + data.ent.idProductoSolicitud + '"></td>';
htmlFabricanteBody += '<td>' + data.ent.telefono + '</td>';
htmlFabricanteBody += '<td><a href="javascript:void(0)" class="modalAgregarPaises" data-fabricanteDistribuidorId="' + data.ent.id + '" data-productoSolicitudId="' + data.ent.idProductoSolicitud + '" data-toggle="modal" data-target="#addPaisesFabricante" data-backdrop="static"><i class="fa fa-plus-circle" data-toggle="tooltip" data-placement="top" title="' + Translator.trans('boton.editable_paises', {}, 'AppBundle') + '"></i></a></td>';
htmlFabricanteBody += '</tr>';

htmlSelFabricanteBody = '<tr data-idproductosolicitud="' + data.ent.idProductoSolicitud + '" data-id="' + data.ent.id + '">';
htmlSelFabricanteBody += '<td><input type="checkbox" name="fabLinkChoice[]" value="' + data.ent.idProductoSolicitud + '"></td>';
htmlSelFabricanteBody += '<td>' + data.ent.nombre + '</td>';
htmlSelFabricanteBody += '<td>' + data.ent.direccion + '</td>';
htmlSelFabricanteBody += '<td class="has_pais fabTd-' + data.ent.idProductoSolicitud + '"></td>';
htmlSelFabricanteBody += '<td>' + data.ent.telefono + '</td>';
htmlSelFabricanteBody += '</tr>';

$(htmlFabricanteBody).appendTo("#fabricanteBody");
$(htmlSelFabricanteBody).appendTo("#selFabricanteBody");

htmlFabricanteBodyhtmlSelFabricanteBody 之间的唯一区别是这一行:

htmlFabricanteBody += '<td><a href="javascript:void(0)" class="modalAgregarPaises" data-fabricanteDistribuidorId="' + data.ent.id + '" data-productoSolicitudId="' + data.ent.idProductoSolicitud + '" data-toggle="modal" data-target="#addPaisesFabricante" data-backdrop="static"><i class="fa fa-plus-circle" data-toggle="tooltip" data-placement="top" title="' + Translator.trans('boton.editable_paises', {}, 'AppBundle') + '"></i></a></td>';

为了避免 DRY,是否可以在附加到 #selFabricanteBody 之前从 htmlFabricanteBody 中删除上面的行?换句话说,#fabricanteBody 应该保持 htmlFabricanteBody 的内容不变,#selFabricanteBody 应该具有 htmlFabricanteBody 相同的内容code> 减去我正在谈论的行,有什么建议吗?解决办法?

最佳答案

可以组合成一个简单的函数,决定是否添加链接。由于变量名称非常相似,因此看起来更容易阅读。

另一个好处是您可以将函数移出脚本中的逻辑流并将其放在任何地方

function getRowHtml(data, showLink) {
    var row = '<tr data-idproductosolicitud="' + data.ent.idProductoSolicitud + '" data-id="' + data.ent.id + '">';
    row += '<td><input type="checkbox" name="fabLinkChoice[]" value="' + data.ent.idProductoSolicitud + '"></td>';
    row += '<td>' + data.ent.nombre + '</td>';
    row += '<td>' + data.ent.direccion + '</td>';
    row += '<td class="has_pais fabTd-' + data.ent.idProductoSolicitud + '"></td>';
    row += '<td>' + data.ent.telefono + '</td>';
    /* only variation */
    if (showLink) {
        row += '<td><a href="javascript:void(0)" class="modalAgregarPaises" data-fabricanteDistribuidorId="' + data.ent.id + '" data-productoSolicitudId="' + data.ent.idProductoSolicitud + '" data-toggle="modal" data-target="#addPaisesFabricante" data-backdrop="static"><i class="fa fa-plus-circle" data-toggle="tooltip" data-placement="top" title="' + Translator.trans('boton.editable_paises', {}, 'AppBundle') + '"></i></a></td>';
    }
    row += '</tr>';    
    return row;
}

$(getRowHtml(data,true)).appendTo("#fabricanteBody");
$(getRowHtml(data,false)).appendTo("#selFabricanteBody");

关于javascript - 在附加到动态内容中的元素之前删除最后一个 TD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768895/

相关文章:

javascript - JS Math - 获取 Var Val 并四舍五入到最接近的第 100 位

javascript - 如何从 firefox 扩展访问网页数据?

javascript - 使用 CF8 或 JS 根据选择框中的 2 个选择自动填充输入表单字段

javascript - 将一个计算数组中对象数量的函数放入另一个函数中

javascript - 服务器调用一些(但不是全部)客户端方法

javascript - jQuery.each() 带有 ajax 的目标元素,始终以循环中的最后一项为目标

jquery - 显示 : none goes weird with iframe timeline

javascript - JQuery进度圈+淡入淡出页面?

javascript - HTML5 数据被读取为数字而不是字符串?

html - aria - 多行用途