有关克隆/复制TR的一些问题

雷尼埃

我有这段代码用于将tr元素从模态中克隆/复制到页面。

$(function () {
    $('#toggleCheckbox').on('click', function () {
        var $toggle = $(this).is(':checked');
        $("input:checkbox").attr('checked', $toggle);
        $('#btnAplicarNorma').prop('disabled', !$toggle);
    });

    $('#resultadoNormaBody').on('change', 'input[type=checkbox]', function () {
        var $my_checkbox = $(this);
        var $my_tr = $my_checkbox.closest('tr');
        if ($my_checkbox.prop('checked')) {
            $my_tr.addClass('copyMe');
        }

        var $all_checkboxes = $my_checkbox.closest('tbody').find('input[type=checkbox]');

        $all_checkboxes.each(function () {
            if ($(this).prop('checked')) {
                $('#btnAplicarNorma').prop('disabled', false);
                return false;
            }

            $('#btnAplicarNorma').prop('disabled', true);
        });
    });

    $('button#btnAplicarNorma').on('click', function (ev) {
        var $tr_to_append = $('#resultadoNormaBody').find('tr.copyMe');

        $('#tablaNorma').removeAttr('style');
        $('#alertSinNorma').hide();

        if ($tr_to_append.length) {
            $tr_to_append.find('input[type=checkbox]').prop('checked', false);
            $tr_to_append.clone().appendTo('#normaBody').removeClass('copyMe');
            $tr_to_append.removeClass('copyMe');
            $(this).prop('disabled', true);
        }
    });
});

但是我遇到了一些问题:

  1. 如果我使用表头上的第一个标记所有复选框,则我的代码停止工作,tr即使所有标记都被标记也不会克隆任何复选框
  2. 如何避免两次clone/copy相同tr
  3. 是否可以在克隆之前修改该复选框?如果看一下示例,您会注意到克隆tr副本是如何完全复制模态中的副本的,而我想先取消选中该复选框,这有可能吗?

是一个小玩弄,有什么建议吗?

比尔吉特·马丁内尔(Birgit Martinelle)

主要问题在于,当您以编程方式将其设置为选中状态时,表内的复选框并未真正正确触发。为确保正确触发所有关联的事件,您应该改为触发.click()事件:

  $("#resultadoNormaBody").find("input:checkbox").click();

为确保您不会出现重复的克隆,最简单的方法是不一次克隆所有行,而是遍历它们,并将html与已添加的html进行比较,如下所示:

//fetch all the rows that have already been cloned
            var clonedRows = $("#normaBody").find("tr");

            //iterate thru all the rows that have been checked
            $.each($tr_to_append, function (i, v) {
                var added = false;  
                //fetch their html (for easier compare)
                var currentRowHtml = $(v).html();
                //now compare against the rows that have already been cloned
                $.each(clonedRows, function (i, cRow) {
                    var clonedRowHtml = $(cRow).html();
                    if (currentRowHtml == clonedRowHtml) {
                        added = true;
                    }
                });
                //if the row hasn't been added yet- go ahead and clone it now
                if (!added) {
                    $(v).clone().appendTo('#normaBody').removeClass('copyMe');
                }

            });

这是更新的小提琴的链接:http : //jsfiddle.net/wq51zL9x/4/

这是有关比较表行的更多信息:比较两个表行,如果匹配则删除

这是使用.click()需要复选框更改事件以编程方式完成的对已检查状态的更改的更详尽的解答

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有关SymmetricDS Embedded的一些问题

来自分类Dev

有关班级的一些问题

来自分类Dev

有关资源的一些问题

来自分类Dev

有关Angularjs指令的一些问题

来自分类Dev

有关轮询的一些问题

来自分类Dev

有关光缆的一些问题

来自分类Dev

有关沙发床复制品细节的一些问题

来自分类Dev

有关沙发床复制品细节的一些问题

来自分类Dev

有关带有Openlayers3的WFS-T的一些问题

来自分类Dev

有关“ angularJS与Plupload一起使用的一些问题

来自分类Dev

有关“ angularJS与Plupload一起使用的一些问题

来自分类Dev

有关使用MongoDB Java驱动程序的一些问题

来自分类Dev

有关表格,css中的位置的一些问题

来自分类Dev

有关何时使用片段和活动的一些问题

来自分类Dev

使用jfugue转换密钥-有关Jfugue的一些问题

来自分类Dev

有关Objective-C的一些问题

来自分类Dev

有关angular2提供程序的一些问题

来自分类Dev

有关OpenGL透明度的一些问题

来自分类Dev

Scrapy-有关刮论坛的一些问题

来自分类Dev

有关C语言中内存分配的一些问题

来自分类Dev

有关Python功能及其工作方式的一些问题

来自分类Dev

有关Progress-4GL中事件处理的一些问题

来自分类Dev

有关异常安全性和内存泄漏的一些问题

来自分类Dev

C ++ STL容器-有关类型的一些问题?

来自分类Dev

有关SSH密钥身份验证的一些问题

来自分类Dev

有关原型和数组的一些问题

来自分类Dev

有关解析multiplt Spring View解析器的一些问题

来自分类Dev

有关指向班级成员的指针的一些问题

来自分类Dev

有关OpenGL透明性的一些问题