1

jquery コードで clone メソッドを使用しようとすると、いくつかの問題に直面します。私が欲しいものと私が直面している問題をここにリストしました。

まず最初に、私が欲しいものを教えてください。追加ボタンをクリックすると、私のコードは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 回 atlist でクローンを作成する必要があり、その後、最初のマイナス アイコンをクリックしたときに 1 回だけ削除されます。その後、これ以上削除することはできません。

この種の問題を解決するために何をすべきか誰か教えてもらえますか?

つまり、クローンを作成するにはプラス ボタンをクリックし、クローンを削除するには削除ボタンをクリックします。

4

2 に答える 2

3

ID は一意でなければなりません。ノードのクローンを作成する可能性がある場合は、必ずその ID 属性を一意のものに置き換えてください。また、それらすべてを置き換える準備ができていない限り、ID を内部で使用しないでください。このためのクラスを優先します。

于 2013-06-27T11:55:43.030 に答える
3

問題は$("#toremoveclone").click(...)バインディングにあります。あなたはいくつかのことを見逃していました。これが作業中のフィドルです。

問題:

  • ID は一意である必要があります。
  • セットアップせずに、イベントの委任を期待していました。
  • $("#toremoveclone").click(...)クリック イベントのみを最初の にバインドします#toremoveclone
  • 2 つ以上のクローンを追加することを確認するには (1 つを削除するには、コードで複数のクローンが必要です) &フィドルの最初のクローンを削除します。
  • 削除されます。しかし、クリックイベントにバインドされていないため、そうしない人もいます。

私が行った変更:

  • div( toremoveclone) のクラスを追加しました。

  • イベントバインディングをに変更

    $(".cloneelementtable").on('クリック', '.toremoveclone', function () {..})

  • Jquery のイベント デリゲートについて詳しくは、ここここを参照してください。

于 2013-06-27T11:57:13.973 に答える