0

そこで、次のようなクラスを作成しました。

class CoreTheme_Form_Helpers_TabbedForm extends AisisCore_Form_Helpers_Content{

    protected $_html = '';

    public function init(){
        parent::init();

        if(isset($this->_options)){
            $this->_html .= '<ul class="nav nav-tabs">';
            foreach($this->_options as $options){
              $this->_html .= '<li><a href="#'.str_replace(" ", "", $options['tab']).'" data-toggle="tab">
                '.$options['tab'].'</a></li>';
            }
            $this->_html .= '</ul>';

            $this->_html .= '<div class="tab-content">';
            foreach($this->_options as $options){
                $this->_html .= '<div class="tab-pane" id="'.str_replace(" ", "", $options['tab']).'">...</div>';
            }
            $this->_html .= '</div>';           
        }
    }

    public function __toString(){
        return $this->_html;
    }
}

私がやろうとしているのは、アクティブなクラスをクラス タブ ペインを使用して div に追加することですが、1 回だけ、最初の 1 つだけに追加します。

そうで:

foreach($this->_options as $options){
    $this->_html .= '<div class="tab-pane" id="'.str_replace(" ", "", $options['tab']).'">...</div>';
}

html は次のようになります。

<div class="tab-pane active" id="something">...</div>
<div class="tab-pane" id="something1">...</div>
<div class="tab-pane" id="something2">...</div>

アイデア?

4

5 に答える 5

1

クライアントから追加しても構わない場合、これは jQuery のワンライナーです。

$('.tab-pane').first().addClass('active');
于 2013-02-13T18:08:32.150 に答える
1

変数を使用して追加のクラスを保存しactive、最初のセットの後にリセットするだけです。

$extraClass = "active";
foreach($this->_options as $options){
    $this->_html .= '<div class="tab-pane '.$extraClass. '" id="'.str_replace(" ", "", $options['tab']).'">...</div>';
    $extraClass = "";
}
于 2013-02-13T18:08:10.977 に答える
0

カウンターが必要な場合、なぜ使用するのforeachですか?通常の使用for

for ($i=0 ; $i < count($this->_options) ; $i++){

    $options = $this->_options[$i];

    if ($i==0) {
        // do something else
    }
于 2013-02-13T18:08:33.517 に答える
0
$active = " active";
foreach($this->_options as $options){

    $this->_html .= '<div class="tab-pane'. $active .'" id="'.str_replace(" ", "", $options['tab']).'">...</div>';
    $active = "";

}

使えると思います

于 2013-02-13T18:08:54.127 に答える
0

str_replace を実行して、次の全体を置き換えることができます。

str_replace('tab-pane', 'tab-pane active', $this->_html, 1);

... ここで、最後のパラメータは 1 で、置換回数です。 http://php.net/manual/en/function.str-replace.php

于 2013-02-13T18:11:03.583 に答える