1

1.8.3.js で正常に動作する jquery を使用する js 関数がありますが、1.9.1.js に更新すると終了します。私はこの時点で本当に jquery について何も知りません (それは勉強すべきことのリストに載っていて、すぐに出てきます)。

<script type="text/javascript">
  var allCheckBoxSelector = '#<%=GridView1.ClientID%> 
         input[id*="chkAll"]:checkbox';
  var checkBoxSelector = '#<%=GridView1.ClientID%> 
         input[id*="chkSelected"]:checkbox';

  function ToggleCheckUncheckAllOptionAsNeeded()
  {
    var totalCheckboxes = $(checkBoxSelector),
           checkedCheckboxes = totalCheckboxes.filter(":checked"),
           noCheckboxesAreChecked = (checkedCheckboxes.length === 0),
           allCheckboxesAreChecked = (totalCheckboxes.length ===
           checkedCheckboxes.length);

     $(allCheckBoxSelector).prop('checked', allCheckboxesAreChecked);
    }

    $(document).ready(function ()
    {
      $(allCheckBoxSelector).live('click', function ()
      {
        $(checkBoxSelector).prop('checked', $(this).is(':checked'));

        ToggleCheckUncheckAllOptionAsNeeded();
      });

      $(checkBoxSelector).live('click', ToggleCheckUncheckAllOptionAsNeeded);

      ToggleCheckUncheckAllOptionAsNeeded();
  });
</script>

ここで何が問題なのかについて何か提案はありますか? 繰り返しますが、1.8.3.js を参照する場合は完全に機能しますが、1.9.1.js を使用する場合、「すべてチェック」ボックスをチェックしても何の効果もありません。

4

3 に答える 3

2

この.live()関数はjQuery1.7で非推奨になり、最終的にjQuery1.9で完全に削除されました。もう存在しない関数を呼び出そうとしているため、コードは機能しなくなりました。の代わりに.live()、の委任イベント構文を使用します.on()。したがって、これを変更します。

$(allCheckBoxSelector).live('click', function () {
    $(checkBoxSelector).attr('checked', $(this).is(':checked'));
    ToggleCheckUncheckAllOptionAsNeeded();
});

$(checkBoxSelector).live('click', ToggleCheckUncheckAllOptionAsNeeded);

これに:

$(document).on('click', allCheckBoxSelector, function () {
    $(checkBoxSelector).prop('checked', $(this).is(':checked'));
    ToggleCheckUncheckAllOptionAsNeeded();
});

$(document).on('click', checkBoxSelector, ToggleCheckUncheckAllOptionAsNeeded);

.live()への変換の詳細については、のAPIドキュメントを.on()参照してください。.live()

于 2013-02-22T15:41:22.427 に答える
1

チェックボックスには .attr の代わりに .prop を使用します。

$(checkBoxSelector).prop('checked', $(this).is(':checked'));
于 2013-02-22T15:37:53.653 に答える