1

したがって、fieldsetpaneldivと「生成されたコンテンツ」の 2 つのセクションがありdivます。あるセクションからの変更時に要素を非表示にし、別のセクションでそれらを再表示することにより、要素をある要素から別の要素に「移動」しています。.abstractclassといくつかの要素がすべてclass を持つ特定のセクション「Abstract」の場合、oneseven非表示の数に基づいてセクションの幅属性を変更するにはどうすればよいですか?

これが私のコードです:

// Abstract
//hide initially
    $('fieldset.abstract label').hide();
//individual Abstract elements Toggle Buttons
    //Currently on, turning Off
        $('.block > .abstract > .superseven > section > .oneseven > input').on('change', function () {
            var hidden = 0;
            var width = Number((1/(7-hidden))*100);
            if (this.checked) {
            } else {
                var hidden = ($('.block > .abstract > .superseven > section > :hidden').length + 1);
                var width = Number((1/(7-hidden))*100);
                console.log(hidden);
                console.log('"' + Number(width) + '%"');
/*issue here*/      $('.oneseven').css("width", '"' + Number(width) + '%"');
                var index = $(this).closest('section').prevAll('section').length;
                $('.block > .abstract > .superseven > section').eq(index).hide("slow");
                $('fieldset.abstract > label').eq(index+1).show("slow");
                $('fieldset.abstract > input').eq(index+1).prop('checked' , true);
            }
        });
    //Currently off, turning On
        $('fieldset.abstract > input').on('change', function () {
            var hidden = 0;
            var width = Number((1/(7-hidden))*100);
            if (this.checked) {
            } else {
                var hidden = ($('.block > .abstract > .superseven > section > :hidden').length - 1);
                var width = Number((1/(7-hidden))*100);
                console.log(hidden);
                console.log('"' + Number(width) + '%"');
/*and here*/        $('.oneseven').css("width", '"' + Number(width) + '%"');
                var index = $(this).prevAll('input').length;
                $('.block > .abstract > .superseven > section').eq(index-1).show("slow");
                $('.block > .abstract > .superseven > section > .oneseven > input').eq(index-1).prop('checked' , true);
                $('fieldset.abstract > label').eq(index).hide("slow");
            }
        });

$('.oneseven').css("width", "33.33%"); 数値を25%orなどに入力または変更することで、コンソールでこれを実現できます20%が、JS セクションで取得することはできません。

私が試してみました:

  • parseInt() を使用して int に型キャストする
  • NumberJS(現在のコード)を使用するように変更する
  • コンソールで実際に幅のあるすべてを数値形式で入力すると、機能します

css 属性の Jquery セレクターの 2 番目のパラメーターのどこかにあると思います。どうすれば修正できますか? ノート

この問題を解決するために変数がグローバルである必要があるかどうかわからないため、varshiddenとtwo があります。width私はそれを機能させようとしています。その後、トラブルシューティングを行い、必要なスコープを確認できます。

4

1 に答える 1

2

はい、@pimvdbは正しいです。何らかの理由で、ネストされた引用符は必要ないため、コードの最終行は $('.oneseven').css("width", (width) + "%");

型のNumber()キャスト/変換は必要ありませんでした。

于 2012-06-30T19:26:30.000 に答える