1

iCheck プラグインで奇妙な問題に直面しています。ラジオボタンとチェックボックスのあるフィールドはほとんどありません。それらを美化するためにiCheckプラグインを使用しています。動的チェックボックスとラジオ以外はすべて正常に機能します。

いくつかのラジオ ボタンを動的に追加し、すぐに iCheck 関数を呼び出しても何も起こりません。しかし、firebug から同じ関数を呼び出すと、その機能と iCheck 機能が無線に関連付けられます。どうしたの。

/* Here my code for adding dynamic radios with class red */
$('input[type="checkbox"].red, input[type="radio"].red').iCheck({
    checkboxClass: 'icheckbox_minimal-red',
    radioClass: 'iradio_minimal-red',
    increaseArea: '10%' // optional
});
alert(1);

アラートが実行されているので、私の iCheck コードも問題ないと思います。しかし、奇妙なことに、上記の iCheck コードを firebug から実行すると、ラジオが iCheck 機能にバインドされます。問題がわかりませんでした。

もう 1 つの奇妙なことは、別の無線セットを追加すると、動的に作成された以前の無線セットが iCheck にバインドされ、新しいセットがまだバインドされていないことです。そのため、新しいセットが追加されるたびに、以前のセットが iCheck に結合されます

実際のコード

 $('#btn_savefield').click(function () {
            var fID, m, opt, cap;
            fID = $('#<%= dd_fieldtype.ClientID %>').val();
            var fe = $('#hid_fieldedit').val();
            m = $('#cb_mandatoryfield').prop('checked');
            if (m == false) {
                m = 0;
            }
            else {
                m = 1;
            }

            var s = $('#txt_fieldoptions').val();
            opt = s.replace(/\r\n|\r|\n/g, '|');
            cap = $('#txt_fieldcaption').val();

            var tempParam, Param;
            var tempParam = { FieldTypeID: fID, fieldTitle: cap, newoptions: opt, mandatory: m };
            var param = JSON.stringify(tempParam);
            //alert(fID);
            //alert(param);
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: param,
                url: "postjobs.aspx/getFieldType",
                dataType: "json",
                error: function (data) {
                    //alert("error");
                    //alert(data);
                    alert(JSON.stringify(data));
                },
                success: function (data) {
                    var f = data.d;
                    //alert(f);
                    if (data.d != '') {
                        if (parseInt(fe) >= 0) {
                            $('#<%= div_formfields.ClientID %>').find('.form-group:eq(' + fe.toString() + ')').replaceWith(f);
                        }
                        else {

                            $('#<%= div_formfields.ClientID %> hr').before(data.d);
                        }
                    }

                }
            });
            $('#Modal_newfield').modal('hide');
            alert($('input[type="checkbox"].red, input[type="radio"].red').length);
            $('input[type="checkbox"].red, input[type="radio"].red').iCheck({
                checkboxClass: 'icheckbox_minimal-red',
                radioClass: 'iradio_minimal-red',
                increaseArea: '10%' // optional
            });

        });
4

1 に答える 1