jQuery Uniformライブラリを使用してチェックボックスをオフにする方法


144

のチェックを外すことに問題がありますcheckbox。私が試みている私のjsFiddleを見てください:

   $("#check2").attr("checked", true);

私が使用して均一にスタイリングするためにcheckbox、それは単純にするために動作しません/チェックを外して確認してくださいcheckbox

何か案は?


グーグルクロームと
ファイアフォックスの

回答:


108

ドキュメントを見ると$.uniform.update、「ユニフォーム」要素をリフレッシュする機能があります。

例: http : //jsfiddle.net/r87NH/4/

$("input:checkbox").uniform();

$("body").on("click", "#check1", function () {
    var two = $("#check2").attr("checked", this.checked);
    $.uniform.update(two);
});

5
@mkoryak:1.4.4では問題なく動作しますが、jsおよびcssファイルへのリンクが壊れていました。これが更新されたフィドルです。特にで問題が発生する場合は1.6、jQueryが変更されての動作が元に戻されたため、おそらくそれが当てはまります.attr()1.6以上を使用する場合、実際にはを使用する必要があります.prop()
user113716 2011

更新されたjsFiddleとオリジナル(チェックボックス2の誤表示まで)の違いはまったくわかりませんが、更新されたバージョンは機能し、元のバージョンは機能しませんでした!?!?
iPadDeveloper2011 2013

ところで、これらすべてのピクセル描画のユニフォームは、Retinaで非常にセクシーに見えませ
化身

私にとってはうまくいきませんでしたjsfiddleがうまくいかないか混乱しています
matthy

367

より簡単な解決策は、ユニフォームを使用するのではなく、これを行うことです。

$('#check1').prop('checked', true); // will check the checkbox with id check1
$('#check1').prop('checked', false); // will uncheck the checkbox with id check1

これにより、定義されているクリックアクションはトリガーされません。

次のものも使用できます。

$('#check1').click(); // 

これにより、チェックボックスのオン/オフが切り替わりますが、定義したクリックアクションもトリガーされます。ので注意してください。

編集:jQuery 1.6+はチェックボックスのチェックされてprop()いないattr()値を使用します


2
これにより、jQuery 1.7.1のchecked属性はそのままになります。機能しますが、本来あるべき動作をしません。
2rs2ts 2014年

24
$("#chkBox").attr('checked', false); 

これは私にとってはうまくいきました、これはチェックボックスのチェックを外します。使用できるのと同じ方法で

$("#chkBox").attr('checked', true); 

チェックボックスをオンにします。


4
.attr()の代わりに.prop()関数を使用する方が良いと思います。そうしないと、期待どおりに機能しない場合があります...
Simon Steinberger

13

あなたが使用している場合は均一な1.5を、その後追加するには、この簡単なトリックを使用するか、チェックの削除属性
ちょうどあなたのチェックボックスの入力フィールドの値=「チェック」を追加します。
このコードを追加します。uniform.js> function doCheckbox(elem){>.click(function(){

if ( $(elem+':checked').val() == 'check' ) {
    $(elem).attr('checked','checked');           
}
else {
    $(elem).removeAttr('checked');
}   

入力ボックスにvalue = "check"を追加したくない場合は、2つのチェックボックスを追加する場合があるため、これを使用します。

if ($(elem).is(':checked')) {
 $(elem).attr('checked','checked');
}    
else
{    
 $(elem).removeAttr('checked');
}

あなたが使用している場合は均一な2.0を、チェックの属性を追加または削除するには、この簡単なトリックを使用し
、この中でclassUpdateChecked($tag, $el, options) {機能変更

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
}

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
    if (isChecked) {
        $el.attr(c, c);
    } else {
        $el.removeAttr(c);
    }

}

7
$('#check1').prop('checked', true).uniform(); 
$('#check1').prop('checked', false).uniform(); 

これでうまくいきました。


どうもありがとうございました。これが最も簡単なソリューションであることを確認できます。
Rudolph Opperman 2017年


1

$.uniform.update()ドキュメントに記載されているようにJavaScriptを使用して要素を更新する場合は、呼び出す必要があります。


1

まずchecked、の値checkedまたは空の文字列を使用できます。

$("input:checkbox").uniform();

$('#check1').live('click', function() {
    $('#check2').attr('checked', 'checked').uniform();
});

の値としてブール値を渡すことには何の問題もありませんchecked
user113716 2011

ただし、HTMLマークアップは作成していません。プロパティをに設定していますHTMLInputElementcheckedプロパティを見てください。
user113716 '14

気にしないでください...なぜ無効なのかもよくわかりません…
nyuszika7h

ブール値の引き渡しは1.6以降でのみサポートされており、その前に、checked属性を 'checked'に設定するか削除する必要がありました。
mkoryak 2011


1

 $("#checkall").change(function () {
            var checked = $(this).is(':checked');
            if (checked) {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", true).uniform();
                });
            } else {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", false).uniform();
                });
            }
        });

        // Changing state of CheckAll custom-checkbox
        $(".custom-checkbox").click(function () {
            if ($(".custom-checkbox").length == $(".custom-checkbox:checked").length) {
                $("#chk-all").prop("checked", true).uniform();
            } else {
                $("#chk-all").removeAttr("checked").uniform();
            }
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id='checkall' /> Select All<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="PHP"> PHP<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="AngularJS"> AngularJS<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Python"> Python<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Java"> Java<br/>


0

もう1つの方法は、

使用する $('#check2').click();

これにより、ユニフォームはチェックボックスをオンにして、マスクを更新します


-1

ラジオbtnのように機能するチェックボックス

$(".checkgroup").live('change',function() { var previous=this.checked; $(".checkgroup).attr("checked", false); $(this).attr("checked", previous); });

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.