0

アコーディオンメニューでデフォルトのアクティブアイテムを定義しようとしています:

function activate_accordion(course_id){
        var active_item = '';
        if (course_id == false){
            active_item = false;
        }
        else {
            active_item = $('.accordion div[id="course-' + course_id + '"]').attr('active');
        }

        alert(active_item);
        var icons = {
                header: "../../img/plus.png",
                activeHeader: "../../img/minus.png"
            };

        $( ".accordion" ).accordion({
            collapsible: true,
            icons: icons,
            active: active_item,
            heightStyle: "content"
        });
    }

私の JsFiddle: http://jsfiddle.net/fvMre/ アコーディオンは動作しますが、2 つの問題が発生します。

  1. 最初の問題は、「アクティブ」オプションが機能せず、すべてのアイテムが折りたたまれていることです
  2. 画像への正しいパスが存在する場合でも、マイ アイコン オプションが機能しない

何か案は?

4

3 に答える 3

1

jQuery accordion UIにはすでにデフォルトの+および-アイコンがあります。

これは、

icons: {
            "header": "ui-icon-plus",
            "activeHeader": "ui-icon-minus"
        }

docsから、「アクティブ」は bool または int 0 および 1 にすることができます。コードは数値を返すため、reyaner が言ったことに従うことができます。

 active: parseInt(active_item)

最後に、accordionコードは次のようになります

$(".accordion").accordion({
        collapsible: true,
        active: parseInt(active_item),
        heightStyle: "content",
        icons: {
            "header": "ui-icon-plus",
            "activeHeader": "ui-icon-minus"
        }
    });

このJSFiddleを確認してください

于 2013-07-19T09:41:08.407 に答える
1

アイコンについてはお手伝いできませんが、アクティブな要素については、それを Int に解析してください

active_item = parseInt(active_item)

ああ、アイコンについては、パスではなくクラスを設定する必要はありませんか?

于 2013-07-19T09:30:24.677 に答える
1

「CSS」クラス名を介して画像をロードできます。

var icons = {
                header: "plus",
                activeHeader: "minus"
            };

CSS は次のとおりです。

<style>
        .plus
        {
            background-image:url(../../img/plus.png);
        }
        .minus
        {
            background-image:url(../../img/minus.png);
        }
    </style>
于 2013-07-19T10:14:16.947 に答える