jQuery に関するアプリケーションに問題があります。コード例 ( http://aspnet.4guysfromrolla.com/articles/120810-1.aspx ) を試して、Header CheckBox を使用して GridView 内のすべての行をチェック/チェック解除しました。サンプル コードは jQuery v1.4.4 で動作しますが、最新の jQuery リリース v1.9.0 では動作しません。
これがコードです。
<script type="text/javascript">
var allCheckBoxSelector = '#<%=gvFileList.ClientID%> input[id*="chkAll"]:checkbox';
var checkBoxSelector = '#<%=gvFileList.ClientID%> input[id*="chkSelected"]:checkbox';
function ToggleCheckUncheckAllOptionAsNeeded() {
var totalCheckboxes = $(checkBoxSelector),
checkedCheckboxes = totalCheckboxes.filter(":checked"),
noCheckboxesAreChecked = (checkedCheckboxes.length === 0),
allCheckboxesAreChecked = (totalCheckboxes.length === checkedCheckboxes.length);
$(allCheckBoxSelector).attr('checked', allCheckboxesAreChecked);
}
$(document).ready(function () {
$(allCheckBoxSelector).live('click', function () {
$(checkBoxSelector).attr('checked', $(this).is(':checked'));
ToggleCheckUncheckAllOptionAsNeeded();
});
$(checkBoxSelector).live('click', ToggleCheckUncheckAllOptionAsNeeded);
ToggleCheckUncheckAllOptionAsNeeded();
});
</script>
jQuery v1.4.4 では、すべてが完璧に機能します。ページを読み込むたびに jQuery v1.9.0 を使用すると、「オブジェクトはこのプロパティまたはメソッドをサポートしていません: .live」というエラーが表示されます。構文を使用する場合:
$(allCheckBoxSelector).click(function () {...
上記の代わりに、エラーを回避しますが、ヘッダー チェックボックスは 1 回しか機能しません。もう一度クリックしても何も表示されません。
.on 構文も試しました。
$(allCheckBoxSelector).on('click', function () {...
しかし、それも機能しません。
その問題が jQuery v1.9.0 の変更またはバグによるものかどうかを知りたいです。