1
bind()
の代わりにlive()
を使用して、AJAXでコンテンツをリロードした後でもイベントハンドラが存在することを確認しましたが、他に追加されたJQuery .sortable()
?ソートや追加後にリロードする必要があるULがあります。しかし、AJAXをリロードした後は、ソートが正しく機能しません。AJAXでロードされたコンテンツにJQueryを追加する
ソート可能性は完全に失われませんが、ドラッグははるかに難しくなります。それは周りにジャンプし、一見私はドラッグしようとしているものではない2つの他のセクションを切り替えます。これは部分リロード後にのみ発生します。私の推測では、リロードするときに、ソート可能なものを再接続する必要があります...どうすればこのことができますか?ここに私のコードは次のとおりです。それは要素がDOMに追加されるたびに実行されるように
$("#sections").sortable({
start: function (event, ui) {
startIndex = ui.item.index();
},
update: function (event, ui) {
$.ajax({
type: "POST",
url: "/Form/sortSections",
data: {
formID: '@(Model.formID)',
displayOrder: ui.item.index() + 1,
sectionID: $(ui.item).attr("id"),
startDisplayOrder: startIndex + 1
},
success: function (result) {
$.get("/Form/_AllSections/@(Model.formID)", function (data) {
$("#sections").html(data);
});
},
error: function (req, status, error) {
alert(error);
}
});
}
});
あなたのソリューションを実装し始めている間、私は私のAJAXのGETがリストアイテムだけではなく、全体のULを返していました...実際の問題を発見しました。ですから、私はそのULを#sections ULに追加していました...これは無効なHTMLを複数の方法で作ります。無効なHTMLは#draggableで止められていなければなりません。アドバイスをいただきありがとうございます。私は '.live( 'load'、function())'を将来使用する必要があると確信しています。 – GendoIkari