ここ StackOverflow で他のソリューションをいくつか見てきましたが、なぜこれが突然機能しないのかについて特に興味があります。ちょっとした背景...私たちはまだjQuery 1.7.1を使用しており、新しいバージョンのjQueryで動作しないプラグインとページにパッチを当てようとしています。現時点では、1.8.3 でテストしています。問題は次のとおりです。
TemplateField にボタンがある UpdatePanel にグリッドがあります。各ボタンにはクラスが割り当てられており、クリックすると... モーダルがポップアップします。これは、.live イベントを document.ready に配置した 1.7.1 で完全に機能しました。1.8.3 にアップグレードして、live() と use on() をすべて document.ready で取り除きました。
グリッドでページングするたびに、非同期ポストバックが発生し、.on() が失われます。私が行った唯一の変更は、1.8.3 へのアップグレードです。live() を on() に変更します。これは以前は機能していました。なぜ突然これができなくなったのか。以下のコード例:
$(document).ready(function () {
$("#AppDialog").dialog({
bgiframe: true,
autoOpen: false,
height: 400,
width: 650,
modal: true,
resizable: false }
});
$(".AppEdit").on("click", function (e) {
e.preventDefault();
$("#AppDialog").dialog('open');
});
});
ボタンは、UpdatePanel にあるグリッドの TemplateField 内にあります。
<asp:Button ID="btnEdit" runat="server" Text="Edit" CommandName="EditApp" CssClass="AppEdit" />
これはなぜでしょうか?pageLoad を使用したくないので、ここでの最良のオプションは何ですか?