1

name と id = selectArticle[] のページにいくつかのチェックボックスがあります。私が必要とするのは、ユーザーがチェックボックスをチェックするたびに、特定の要素に class="required" が添付され、同じボックスのチェックを外すと class="required" が削除されることです。

私は .addClass と .removeClass を試しましたが、チェックボックスをオフにするたびに .remove 効果は発生しません。ただし、チェックボックスを再度オンにすると(.toggleClassの場合)、クラスは完全に切り替わります。チェックボックスの「チェック済み」イベントでのみ機能し、チェックを外していないようです。

アラートを通じて確認しましたが、チェック/チェック解除イベントの両方が完全に発生しますが、.removeClass/.toggleClass はまったく機能しません。

この問題を修正するにはどうすればよいですか。私を助けてください!!!

       $("input[name='selectArticle[]']:checkbox").live('change',function(){
          var n = $("input[name='selectArticle[]']:checked").length;
          var id=$(this).val();
          var v = $(this).is(':checked');
          //var vr= $("input[name='selectArticle[]']:unchecked").val();
          //var vr= $(this).val();
          alert(v);
          alert(id);
          //alert("url"+v);
          if($(this).is(':checked'))
          {

            alert('#url'+v);
            $("#title"+id).toggleClass('required');
            $("#id"+id).toggleClass('required');
            $("#url"+id).toggleClass('required url');
            $("#category"+id).toggleClass('required');
            $("#group"+id).toggleClass('required');
          }
          else
          {
            alert("balls"+id);
            ("#title"+id).toggleClass('required');
            $("#id"+id).toggleClass('required');
            $("#url"+id).toggleClass('required url');
            $("#category"+id).toggleClass('required');
            $("#group"+id).toggleClass('required');
          }
         // $("div").text(n + (n <= 1 ? " is" : " are") + " checked!" + " value :" + v);
    });

更新:以下の答え

    $("input[name='selectArticle[]']:checkbox").live('change',function(){
          var n = $("input[name='selectArticle[]']:checked").length;
          var id=$(this).val();
          var v = $(this).is(':checked');
          //var vr= $("input[name='selectArticle[]']:unchecked").val();
          //var vr= $(this).val();
          alert(v);
          alert(id);
          //alert("url"+v);
          if($(this).is(':checked'))
          {

            alert('#url'+v);
            $("#title"+id).addClass('required');
            $("#id"+id).addClass('required');
            $("#url"+id).addClass('required url');
            $("#category"+id).addClass('required');
            $("#group"+id).addClass('required');
          }

         if(!$(this).is(':checked'))
          {
            alert("balls"+id);
            $("#title"+id).removeClass('required');
            $("#id"+id).removeClass('required');
            $("#url"+id).removeClass('required url');
            $("#category"+id).removeClass('required');
            $("#group"+id).removeClass('required');
          }
         // $("div").text(n + (n <= 1 ? " is" : " are") + " checked!" + " value :" + v);
    });
4

3 に答える 3

3

元の問題は、UPDATE に 2 つの IF ステートメントがあることでした。最初の 1 つはボックスが CHECKED の場合は UNCHECKED ですが、2 番目の IF ステートメントはボックスが UNCHECKED になっているため、ボックスを再チェックします。

この種の設定をまだ行っている場合は、状態を前後に反転しているだけなので、何も正しく機能しません。IF-A-THEN-B-ELSE-C のみを使用し、IF-A-THEN B の後に IF-B-THEN-A を使用しないようにしてください。

お役に立てれば。:-)

于 2012-12-04T20:35:37.080 に答える
2

うまくいかないのでtoggleClass試してみてください

if($(this).is(':checked'))
{
    $("#title"+id).removeClass('required');
    ...
}
else
{
    $("#title"+id).addClass('required');
    ...
}

、および同じ変数を使用している他の人のvar id=$(this).val();ために、有効なものが含まれていることを確認してください。("#title"+id)$("#id"+id)

于 2012-04-20T20:52:09.760 に答える
1

うーん...

else if($(this).is(':unchecked'))

:uncheckedは有効な jQuery セレクターではありません。またはだけで試してくださいelse

if(!$(this).is(':checked'))
于 2012-04-20T20:49:12.237 に答える