0

下面粘贴的代码将在选中复选框时将一个<table>元素从一个复制<div>到另一个。但是当复选框未选中<div>时,我如何删除相同的元素。

  $(":checkbox").on('change', function () {

        if ($(this).hasClass('containerToCopy')) {

            if ($(this).is(':checked')) {
               $(this).closest('div').clone().appendTo("#divTestPrintContainer");

            } else {
              // if #divTestPrintContainer contains the element associated with the checkbox then remove it.                    
            }                
        }
    });
4

3 回答 3

2

将数据参数添加到设置为原始检查ID的复制元素,当未选中复选框时,只需找到具有适当数据值的复制元素并将其删除。

就像是:

$(":checkbox").on('change', function () {

    if ($(this).hasClass('containerToCopy')) {

        if ($(this).is(':checked')) {
           var myClone = $(this).closest('div').clone();
           myClone.appendTo("#divTestPrintContainer");
           // Here I insert the 'data-id' attribute to the cloned element and assign
           // it the value of the id from the original element.  This is how we match
           // the cloned element with the original.
           myClone.attr('data-id', $(this).attr('id'));

        } else {
          // if #divTestPrintContainer contains the element associated with the checkbox then remove it.
          // Here we find a child element of the #divTestPrintContainer that contains
          // a 'data-id' attribute matching our checkbox id that is being unchecked.
          $('#divTestPrintContainer').find("[data-id='" + $(this).attr('id') + "']").remove();
        }                
    }
});

这是假设您的原始元素包含标识每个元素的 id。

于 2013-07-16T22:42:47.250 回答
1

也许你应该尝试使用.not(':checked').

http://api.jquery.com/not/

于 2013-07-16T22:46:49.723 回答
-1
$('#divTestPrintContainer').empty();

http://api.jquery.com/empty/

于 2013-07-16T22:55:10.863 回答