本質的に:アイテムをクローンするたびに、それらのアイテムのdata()値が失われます。"move"のjQueryアイテムデータを失う
ストーリー:私は、JSONオブジェクトから動的に入力された項目を格納する3つの列テーブルを持っています。これらの各アイテムには、私が使用するデータ値が設定されています。
を「L1」キーとこれらの作業罰金として格納されたJSONデータを使用しますが...これらの項目のクリックイベントが、私はこれらの項目は、テキストボックスを使用してフィルタリングすることができるようにそこにありますと ":not(:contains( 'text'))"セレクタがあります。
$(".subMenuItem:not(:contains('" + str + "'))").remove();
けど...私は残りをクローニングすることにより、3つの列にアイテムを訴えるしようとして列が不均一にすることができ、3つの列を持っているので。
var items = $(".subMenuItem").clone(true);
$("#subMenuContent td").empty();
addItemsToColumn(items);
これを実行した後、クリック機能は、以前にワークルしたとしても、data()値を検出しなくなりました。
アイテムに格納されているdata()値を保持するにはどうすればよいですか?
// Need to set the expando to null on the cloned set if it exists
// removeData doesn't work here, IE removes it from the original as well
// this is primarily for IE but the data expando shouldn't be copied over in any browser
var clone = ret.find("*").andSelf().each(function(){
if (this[ expando ] !== undefined)
this[ expando ] = null;
});
あなたは、データをつかむ必要がありますクローンにそれを再度追加:
は、あなたがデータをコピー方法の例です: "subMenuItem" VARデータ= $ .MAP($()関数(elemは){ \tリターン$(elemは).dataセクション( 'L1 ') }); var items = $( "。subMenuItem")。clone(true).each(function(i){ \t $(this).data( 'L1'、data [i]) }); $( "#subMenuContent td")。空(); addItemsToColumn(items); – howardr
これらのコメントによると、IEは元のデータも削除します。私はそれを読んでいますか? – webwires
これは非常にうまくいきました。 – webwires