0

Bootstrap アコーディオンでアクセスできるラジオ ボタンのリストを含む Meteor アプリケーションのフォームがあります。クラスを入力要素に挿入して有効/無効としてマークする検証ルーティングを流星に実装しました。

問題: 1 つの入力要素の検証状態が変化するたびに、テンプレートが再描画され、現在開いているアコーディオンが閉じます。

私はこの不器用なアプローチを行うことでこれを解決しました:

Meteor.startup(function() {
    // track collapse state of accordion....
$('.collapse').on('shown', function() {
    Session.set(addBookingCollapse, $(this).attr('id'));
});
});

Template.addrecord.helpers({
    openAccordion: function(accordion) {
        if (Session.get(addBookingCollapse) == accordion) {
            return 'in'
        };
    }
});

<div id="collapseOne" class="accordion-body 
collapse {{openAccordion 'collapseOne'}}">

...その他の 4 つの折りたたみ可能な要素についても同様

しかし、誰のために言うと、もっとエレガントな解決策があるはずです? このためにセッション変数を無駄にしたくありません....

4

2 に答える 2

0

私はあなたのコード/問題をあまり詳しく見ていませんが、なぜIDを使用してそれぞれを個別にターゲットにするのですか? 次のように、それらすべてにクラスを使用しないのはなぜですか。

$('.a-class-that-you-name').on('shown', function() {
    var thisSpecificId = $(this).attr('id');
    Session.set('addBookingCollapse', thisSpecificId);
});

それはうまくいくでしょうか?

于 2013-06-14T06:31:00.207 に答える