簡體   English   中英

jQuery,無法刪除克隆的元素

[英]Jquery, Unable to Remove cloned element

當我嘗試在我的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]我無法刪除克隆的元素,我需要將其克隆到atlist 3次,此后,當我單擊第一個減號圖標時,它只會被刪除一次。 之后,我無法刪除更多內容。

誰能告訴我該怎么做才能解決這種問題?

即單擊加號按鈕進行克隆,然后單擊刪除按鈕以刪除克隆。

ID必須是唯一的。 如果有可能要克隆節點,請確保用唯一的東西替換其ID屬性,並且除非准備好全部替換它們,否則切勿在其中使用ID。 優先選擇此類。

問題出在您的$("#toremoveclone").click(...)綁定上。 你錯過了一些東西。 這是工作的小提琴

問題:

  • ID應該是唯一的。
  • 您原本希望事件委托,但沒有進行設置。
  • $("#toremoveclone").click(...)僅將click事件綁定到第一個#toremoveclone
  • 要檢查是否添加了2個以上的克隆(您的代碼需要1個以上的克隆才能刪除一個)並刪除您的提琴中的第一個克隆。
  • 它將被刪除。 但是其他人不會,因為它們沒有任何點擊事件。

我所做的更改:

  • 為div( toremoveclone )添加了一個類。
  • 將事件綁定更改為

    $(“。cloneelementtable”)。on('click','.toremoveclone',function(){..})

  • 此處此處了解有關Jquery事件委托的更多信息,因為如果我解釋了,我可能會搞砸了:(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM