1

私は近くにいると確信していますが、何が欠けているのかわかりません。

var newId = 1;
$("#trigger").click(function(){
  $("#new-div").attr('id', 'new-div' +newId++).clone().appendTo("#myDiv");
});

ブレークポイントを設定しました。カウンターの自動インクリメントを確認できますが、複製されたdivが本来あるべき場所に表示されません。エラーは発生しません。このためのHTML:

 <div id="secret-div" style="display: none;">
        <div>This is new div number </div>
      </div>
      <p><a id="trigger" href="javascript:void(0);">Please, add an element</a></p>
    <div id="myDiv"></div>
4

3 に答える 3

2

問題は、クローンを作成して追加する前に要素のIDを変更しているため、同じIDを持つ2つの要素が生成され、セレクターとコードが破損することです。

ライブデモを修正

HTML:

<div id="secret-div" style="display:none;">
    <div>This is new div number <span class="spnNewDivNumber"></span></div>
</div>
<p><a id="trigger" href="javascript:void(0);">Please, add an element</a></p>
<div id="myDiv"></div>​

JavaScript:

var newId = 1;
$("#trigger").click(function() {
    var $newSecretDiv = $("#secret-div").clone().attr('id', 'new-div' + newId++);
    $newSecretDiv.show().appendTo("#myDiv");
    $newSecretDiv.find('.spnNewDivNumber').text(newId - 1);
});​
于 2012-12-09T03:40:44.497 に答える
1

現在のコードは、クローンの前に新しいIDを適用しています。つまり、既存のdivのIDを変更しています。これは、次にクリックハンドラーが呼び出されたときに、セレクター'#new-div'に一致するdivが存在しないことを意味します。

クローンの後、またはDOMに挿入した後にIDを適用してみてください。

var newId = 1;
$("#trigger").click(function(){
    $("#new-div").clone().attr('id', 'new-div' +newId++).appendTo("#myDiv");
});

また

var newId = 1;
$("#trigger").click(function(){
    $("#new-div").clone().appendTo("#myDiv").attr('id', 'new-div' +newId++);
});
于 2012-12-09T03:40:43.903 に答える
0

現在のdivの名前が「new-div」でない限り、#new-divのクローンを作成しようとしています。また、生成されたIDで新しいdivを作成するのではなく、元のdivのIDを変更しています。

于 2012-12-09T03:41:34.653 に答える