2016-05-20 4 views
0

インスタンス化可能なポートレットを作成しました。このポートレットの複数のインスタンスを同じページにデプロイしたときに、セレクタのみが原因でjQuery関数が正しく機能しませんIDまたはドキュメント内のクラスによって最初の要素を選択します。インスタンス化可能なポートレット内のjQueryセレクタ(IDの重複)

私はインスタンスIDを区別するためにIDに含めようと考えていました。

私の問題は、私が持つ要素を選択するcan'tことで、コンソールには次のようなエラーがスローされます。

Uncaught Error: Syntax error, unrecognized expression: .tabOferta:eq(1)

私は選択したい要素がある:

<li class="<portlet:namespace/>tabOferta" id="<portlet:namespace/>tabOferta"> 

私はしました次のような指示をテストしました:

$(".<portlet:namespace/>tabOferta"); 
document.getElementsByClassName('<portlet:namespace/>tabOferta'); 
document.getElementsById('<portlet:namespace/>tabOferta'); 

問題は次のとおりです。特定の要素を選択する方法eは同じIDを持つ複数のポートレットですか?

<porlet:namespace>変数をmain.jsで解決するにはどうすればよいですか?

+0

IDは一意である必要があります。なければならない。デザインの結果が重複IDになった場合は、重複するIDがないようにデザインを変更するだけです。 1つのセレクタで複数の要素を選択する必要がある場合は、クラスを使用します。 –

+0

私はIDの一意性を理解していますが、IDでなくクラス別にjqueryセレクタを変更しても同じ問題があります。同じページに同じポートレットを2回デプロイすると、クラスセレクタが最初に発生します。あるポートレットと他のポートレットとの違いは何ですか? –

答えて

0

いつでもCSSセレクタを使用して要素を絞り込むことができます。たとえば、 "portlet:contains(tab0ferta)"がありますが、同じIDの倍数を取得する場合は、デザインを変更したいとTony氏は言います。