ajaxレスポンスに基づいてDOMを変更するためのベストプラクティスは不明です。説明するのは難しいので、コードで話してみましょう。jQueryでAJAX結果に基づいてDOMを変更する
// page has multiple checkboxes
$("input[type='checkbox']").live('click', function {
var cb = $(this); // for the sake of discussion i need this variable to be in scope
$("form").ajaxSubmit({ dataType: "script" });
}
サーバーはバック応答を送信し、jsはeval'dますと、それは「CB」は適用範囲外であることを意味します。私はこれまで何をやったか
は、ヘルパー関数をいくつ作成することです:
var target = undefined;
function setTarget(val) {
target = val;
}
function getTarget() {
return target;
}
をそして、それは、このにコードの最初のスニペットをオン:
サーバの応答Iに続いて// page has multiple checkboxes
$("input[type='checkbox']").live('click', function {
setTarget($(this));
$("form").ajaxSubmit({ dataType: "script" });
}
私が必要とするgetTargetを呼び出します。これはハッキーなようだ...どんな提案?
、その後、応答がグローバルeval'dます(jQueryのでglobalEval機能は) - 成功のハンドラは必要ありません。 – user140550
返されるスクリプトは何をしますか?それが避けられればスクリプトをevalすることを避けることは常に良いことです。そうしないと、ストレージ変数にグローバルスコープを与えることができますが、並行性の問題が発生する可能性があります。 –
したがって、リクエストがjavascriptの場合でもサーバーはHTMLフラグメントを返す必要がありますか? – user140550