1

ディレクティブにリンク関数があり、現在アクティブなDOM要素のcssコンテンツを編集するためのトグル機能があります。そのDOM要素の親または子クラスにアクセスするにはどうすればよいですか。

ディレクティブの一部:

   link: function(scope, element, attrs) {

        var title = angular.element(element.children()[0]),
            opened = true;

        title.bind('click', toggle);

        function toggle() {
            opened = !opened;
                element.removeClass(opened ? 'closed' : 'opened');                  
                element.addClass(opened ? 'opened' : 'closed');
            element.siblings().removeclass('opened').addclass('closed');  // What to do here  

        }
4

1 に答える 1

1

リンク機能を次のように変更します。

link: function(scope, element, attrs) {
    var title = angular.element(element.children()[0]),
        opened = true;

    title.bind('click', toggle);

    function toggle() {
        opened = !opened;
        element.parent().children().addClass("closed");
        element.parent().children().removeClass("opened");
        element.toggleClass("opened", opened);
        element.toggleClass("closed", !opened); //might be redundantdepending on the rest of your code

    }
}

最初に必要なすべてのクラスを削除/追加してから要素を変更すると、目的の結果が得られます。要素の親を選択するだけで、そのすべての親と子を取得できます。.children() は親の直接の子孫のみを選択しますが、同様の .find() メソッドは階層を下に移動します。要素を閉じる他の方法があるかどうかによっては、冗長コードが必要ない場合があります。

于 2013-01-03T13:24:00.697 に答える