1

当我尝试在我的 jquery 代码中使用克隆方法时,我遇到了一些问题。我在这里列出了我想要的以及我面临的问题。

首先让我告诉我我想要什么,我希望当我点击添加按钮时,我的代码应该克隆给 id 的元素,并带有删除按钮的数据。(JS小提琴

这是我的代码:HTML

<table class="cloneelementtable">
    <tr>
        <td>
            <div class="priceandsize1row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize2row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize3row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize4row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize5row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td id="divaddmore">
            <div class="priceandsize6to9row" id="todoclone">
                <img src="http://cdn2.iconfinder.com/data/icons/icojoy/noshadow/standart/gif/24x24/001_01.gif" width="30" height="30">
            </div>
        </td>
        <td>
            <div class="priceandsize10row">
                <div class="tablecolorgrey">B</div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <div id="showsizeheader">
            <td id="tdhide1" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="16">
                    </div>
                </div>
            </td>
            <td id="tdhide2" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="17">
                    </div>
                </div>
            </td>
            <td id="tdhide3" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="18">
                    </div>
                </div>
            </td>
            <td id="tdhide4" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="19">
                    </div>
                </div>
            </td>
            <td id="tdhide5" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="20">
                    </div>
                </div>
            </td>
            <td id="tdhide6" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="21">
                    </div>
                </div>
            </td>
            <td id="tdhide7" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="22">
                    </div>
                </div>
            </td>
            <td id="tdhide8" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="23">
                    </div>
                </div>
            </td>
            <td id="tdhide9" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="24">
                    </div>
                </div>
            </td>
            <td id="tdhide10" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="25">
                    </div>
                </div>
            </td>
            <td id="tdhide11" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="26">
                    </div>
                </div>
            </td>
            <td id="tdhide12" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="27">
                    </div>
                </div>
            </td>
            <td id="tdhide13" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="28">
                    </div>
                </div>
            </td>
            <td id="tdhide14" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="29">
                    </div>
                </div>
            </td>
            <td id="tdhide15" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="30">
                    </div>
                </div>
            </td>
            <td id="tdhide16" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="31">
                    </div>
                </div>
            </td>
            <td id="tdhide17" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="32">
                    </div>
                </div>
            </td>
        </div>
        <td>
            <div class="priceandsize10row">
                <div class="tablecolorgrey">140</div>
            </div>
        </td>
        <td>
            <div class="priceandsize11row">
                <div class="tablecolorgrey">$4815.00</div>
        </td>
        <td>
            <div class="priceandsize11row" id="showsize">
                <img id="showimg" src="images/img_click_moresizes.jpg" width="35" height="30">
            </div>
        </td>
    </tr>
    <tr id="cloneelement">
        <td>
            <div class="priceandsize1row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize2row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize3row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize4row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize5row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row">&nbsp;</div>
        </td>
        <td>
            <div class="priceandsize6to9row" id="toremoveclone">
                <img src="http://cdn2.iconfinder.com/data/icons/32pxmania/buttons_21.png" width="30" height="30">
            </div>
        </td>
        <td>
            <div class="priceandsize10row">
                <div class="tablecolorgrey">B</div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <td>
            <div class="priceandsizeinputsrow">
                <div class="aviailableinput">
                    <input name="" type="text" placeholder="15">
                </div>
            </div>
        </td>
        <div id="showsizeheader">
            <td id="tdhide1" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="16">
                    </div>
                </div>
            </td>
            <td id="tdhide2" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="17">
                    </div>
                </div>
            </td>
            <td id="tdhide3" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="18">
                    </div>
                </div>
            </td>
            <td id="tdhide4" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="19">
                    </div>
                </div>
            </td>
            <td id="tdhide5" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="20">
                    </div>
                </div>
            </td>
            <td id="tdhide6" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="21">
                    </div>
                </div>
            </td>
            <td id="tdhide7" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="22">
                    </div>
                </div>
            </td>
            <td id="tdhide8" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="23">
                    </div>
                </div>
            </td>
            <td id="tdhide9" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="24">
                    </div>
                </div>
            </td>
            <td id="tdhide10" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="25">
                    </div>
                </div>
            </td>
            <td id="tdhide11" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="26">
                    </div>
                </div>
            </td>
            <td id="tdhide12" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="27">
                    </div>
                </div>
            </td>
            <td id="tdhide13" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="28">
                    </div>
                </div>
            </td>
            <td id="tdhide14" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="29">
                    </div>
                </div>
            </td>
            <td id="tdhide15" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="30">
                    </div>
                </div>
            </td>
            <td id="tdhide16" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="31">
                    </div>
                </div>
            </td>
            <td id="tdhide17" style="display:none;">
                <div class="priceandsizeinputsrow">
                    <div class="aviailableinput">
                        <input name="" type="text" placeholder="32">
                    </div>
                </div>
            </td>
        </div>
        <td>
            <div class="priceandsize10row">
                <div class="tablecolorgrey">140</div>
            </div>
        </td>
        <td>
            <div class="priceandsize11row">
                <div class="tablecolorgrey">$4815.00</div>
        </td>
    </tr>
</table>

代码在这里:JQ

var id = 0;
$(document).ready(function () {
    $('#todoclone').click(function () {
        $('#cloneelement').clone().appendTo(".cloneelementtable");
        id++;
    });

    /*$('#toremoveclone').click(function() {
               $('#cloneelement').closest('#cloneelement').fadeOut("slow", function(){
             $(this).remove();
              });
            });*/
    $("#toremoveclone").click(function () {
        console.log(id);
        if (id > 1) { //Only apply if the lang field is more than 1
            id = id - 1;
            $("#cloneelement:last").remove();
            console.log(id);
        }
    });
});

我对此进行了一些搜索并制作了类似的代码(此处的代码:JS Fiddle

但是代码中存在一些问题,(如下所列) 1] 我无法删除克隆的元素,我需要在列表中克隆它 3 次,然后单击第一个减号图标时仅删除一次。之后我不能删除更多。

谁能告诉我该怎么做才能解决这种问题?

即单击加号按钮进行克隆,单击删除按钮删除克隆。

4

2 回答 2

3

ID 必须是唯一的。如果您有可能克隆一个节点,请确保将其 ID 属性替换为唯一的属性,并且切勿在其中使用 ID,除非您也准备好替换它们。更喜欢 thi 的课程。

于 2013-06-27T11:55:43.030 回答
3

问题在于您的$("#toremoveclone").click(...)绑定。你错过了一些东西。这是工作小提琴

问题:

  • ID 应该是唯一的。
  • 您期待事件委托,但没有设置它。
  • $("#toremoveclone").click(...)仅将 click 事件绑定到第一个#toremoveclone.
  • 检查添加超过 2 个克隆(您的代码需要超过 1 个克隆才能删除一个)并删除小提琴中的第一个。
  • 它将被删除。但其他人不会,因为他们没有绑定到任何点击事件。

我所做的更改:

  • toremoveclone为 div( )添加了一个类。

  • 将事件绑定更改为

    $(".cloneelementtable").on('click', '.toremoveclone', function () {..})

  • 在此处此处了解有关 Jquery 事件委托的更多信息,因为如果我解释一下,我可能会搞砸:(

于 2013-06-27T11:57:13.973 回答