0

親オブジェクトに子を追加しようとしているページがあります。

このページには、ajax get を呼び出す「子の追加」というリンクがあり、子のテキスト ボックスを含む部分ビューを返します。成功したので、結果を div の innerHTML に追加する関数を実行しています。

部分ビューには、"Birthdate{id}" という名前の生年月日のテキスト ボックスがあります。{id} は、追加された数に基づく数値です。

成功の方法では、次にやっています

$("#BirthDate" + childAdded).datepicker();

これは、最新の生年月日ピッカーではうまく機能します。3 つの子を追加すると、3 番目の子 div の BirthDate はロード時に日付ピッカーを持ちますが、1 番目と 2 番目は日付ピッカーを失います。4 番目を追加すると、3 番目から日付ピッカーが削除されます。

コード:

function addChild() {
  $.ajax({
    type: "GET",
    url: "/Home/AddChild?childNumber=" + $("#CurrentNumberOfChildren").val(),
    data: "{}",
    contentType: "text/html",
    dataType: "html",
    success: function (results) {
      var div = document.getElementById('ChildDiv');
      div.innerHTML += results;
      $("#CurrentNumberOfChildren").val(parseInt($("#CurrentNumberOfChildren").val()) + 1);
      var numberOfChildren = $("#CurrentNumberOfChildren").val();
      $("#BirthDate" + numberOfChildren).datepicker();
    }
  });
}

誰もこれに遭遇したことがありますか?

4

4 に答える 4

1

この行 -- -- は、新しい子セクションを追加するたびdiv.innerHTML += results;に の内容全体を書き換えています。これは、書き換えられた要素が同じ s などを使用しているにもかかわらず、div以前に にあった要素のイベント フックなどを失っていることを意味します。これが日付ピッカーを壊していると思われます。divid

divこれを修正するには、コンテンツ全体を毎回書き直すのではなく、既存のものに新しいコンテンツを追加する必要があります。次の 2 行を置き換えてみてください。

var div = document.getElementById('ChildDiv');
div.innerHTML += results;

これで:

$('#ChildDiv').append(results);
于 2010-07-07T23:16:27.700 に答える
0

.live() – jQuery API

jQuey.live はどうですか?

セレクターの変更は必要ですが。

于 2010-07-08T01:43:26.147 に答える
0

私が見る限り、同じ ID を共有する複数の要素を持っている可能性があります。jQuery が正しく機能するには、有効な dom が必要です。w3cでマークアップを検証できます。

部分ビューの応答を質問に追加できますか?また、jquery と ui のバージョンは何ですか?

于 2010-07-07T22:59:05.870 に答える
0

div の HTML を結果に置き換えているため、部分ビューがすべてのテキスト ボックス、前のものと新しいものを返すと想定しています。その場合、以前の要素 (日付ピッカーを追加した要素) はページから削除されています。その場合は、日付ピッカーをすべてのBirthDate要素に再度追加する必要があります。

于 2010-07-07T23:04:46.863 に答える