2

過去1時間からこの小さな問題を整理しようとしています:

<script type="text/javascript">
$(document).ready(function(){        
    $("input[name='isClubMember']:checkbox").mousedown(function() {
         if (!$(this).is(':checked')) {
            this.checked = confirm("Are you sure?");
            $(this).trigger("change");
         }
    });
 });
</script>

おかしなことに、これは JSFiddle で機能しますが、私の jsp ページでは機能しません。 サンプル

上記のコードではnull、この行でエラーが発生します (デバッグ コンソールで)

 $("input[name='isClubMember']:checkbox").mousedown(function() {

JQ -Ver : 1.7.2 ブラウザ : IE8

更新: IE コンソールのエラー:

 'null' is null or not an object 

上記の行で

4

4 に答える 4

7

JSPページには、jQuery の後にPrototypeライブラリが含まれているようです。

プロトタイプの$()関数は id を取りnull、要素が見つからない場合は戻ります。これは、観察している動作と一致しています。

コードjQueryのどこでも代わりに使用してみてください:$

jQuery("input[name='isClubMember']:checkbox").mousedown(function() {
    // ...
});

または、引数jQueryでオブジェクトが渡されるクロージャーにコードを入れます。$

(function($) {
    // The rest of your code...
})(jQuery);

readyまたは、ハンドラーに同じ$引数が渡されるという事実を利用します。

jQuery(document).ready(function($) {
    // The code in your 'ready' handler...
});

包含の順序が変更された場合にPrototype の関数をオーバーライドしないように、jQuery をnoConflictモードで実行することもできます。$()

于 2012-07-28T09:03:18.173 に答える
0

チェックボックスにクラス名を追加して、クラス名でチェックボックスを見つけることをお勧めします。この場合、ie8の問題のようです。

于 2012-07-28T08:56:59.223 に答える
0

あなたのページではjQueryが接続されていないと思います。小切手。

$ - とにかく関数でオブジェクトを返すのでそう思いますが、jQueryがない場合、 $(str) はnullを返します。

于 2012-07-28T09:02:33.973 に答える
0

セレクターがIE8で壊れていると思います.[type = 'checkbox']を試してみてください.とにかく速いはずです.

    $("input[name='isClubMember'][type='checkbox']").mousedown(function() {
于 2012-07-28T09:05:24.343 に答える