-3

小さな問題があります。スクリプトにh3タグを認識させることができないようです。そのままにしておくことはできませんh3。クラスを追加する必要があります。

マークアップ:

<h3 class="jjheader">
    <?php echo $listitem->title ?>
</h3>

CSS:

#accordion h3.jjheader { 
    padding: 8px 8px 8px 8px; 
    font-weight: bold; 
    font-size: 12px; 
    color: #666666;
    margin-top: 5px; 
    cursor: pointer; 
    border: 1px solid #444444;
    border-radius: 8px;
    background: #151515;
}

.jjheader以下のスクリプトでh3にクラスを追加して置き換えない場合は正常に機能しh3ますが、クラスでは機能しません。

脚本:

<script type="text/javascript">
     var parentAccordion=new TINY.accordion.slider('parentAccordion'); 
     parentAccordion.init('accordion','.jjheader',0,1,'accordion-selected');
</script>

アコーディオンは、 http: //www.scriptiny.com/2009/03/accordion/のTinyAccordionJavaScriptアコーディオンパッケージに基づいています。

誰かが正しい方向を指し示すことができますか?

4

2 に答える 2

3

T$$スクリプトは、でのみ使用されるを定義することから始まりますinit。この関数は、コンテナ内のタグ名で要素を検索します。たとえば、クラスセレクタを使用するように簡単に変更できます。

function T$$(e,p){
    if(e[0] == '.') {
       var matches = p.getElementsByClassName(e.substring(1));
       return matches.length == 0 ? null : matches[0];
    } else {
       return p.getElementsByTagName(e);
    }
}

上記のコードはgetElementsByClassName、渡された検索文字列の最初の文字がドットである場合に使用し、cssクラスセレクターを示します。それ以外の場合は、元のソースと同様に、タグ名で要素を返します。

#もちろん、たとえば、先頭をチェックして実行することで、これを拡張することもできgetElementByIdます。サイトですでにjQueryを実行している場合は、それを単純化してjQueryのsizzleセレクターを利用できます。

function T$$(e,p) { return $(p).find(e); }
于 2012-05-20T19:20:01.833 に答える
2

このスクリプトについて話している場合、コードを変更せずに、必要な場所でクラス名を使用することはできません。つまり、現在の動作方法では、「init」関数の2番目のパラメーターはタグ名である必要があります。

そのコードはきれいではありませんが、単純なので、ニーズに合わせてコードを拡張するのはそれほど難しいことではありません。

于 2012-05-20T19:11:14.997 に答える