1

CRM から生成されたオンライン メニューがあります。各項目は、CRM 内のクライアントによって 3 つの値のいずれかに分類できます。そのため、値を取得して適切な場所に書き込む方法を考え出しました。私をつまずかせたのは、各項目をループし、クラス名を見つけて、他のメニュー項目に影響を与えずに各項目に適用するために必要な特異性のレベルです。

アイテム ID を各クラスに書き込む CRM タグを使用して、各クラスを解析し、親クラスを使用してそのアイテムに含まれるスパンのみに影響を与えることができるようにします... i.

<div class="menu-item-123"> <!-- Each Class modified by CRM id -->
       <!-- Item in the span below are dynamically generated -->
   <span class="items" style="display:none;">Signature,NewItem</span>

       <!-- jQuery writes list above into classes below -->
   <p class="item-type">
     <span class="icon gf"></span>
     <span class="icon new"></span>
     <span class="icon sig"></span>
   </p>

</div>

ここで、jQuery に「.each()」関数を実行させる方法について助けが必要なだけです。生成されたリストからクラス名のリストを解析する関数と、親クラスを取得してそれらのスパン項目のみに書き込む別の関数が必要だと感じています。私のjQueryスキルはせいぜい中級なので、この問題に関する知識が不足していることをお詫びします...

$("div[class*='menu-item-'] .items").each(function() {
    var result = $(this).html();
    //replace commas to create class names
    var list = result.replace(/,/gi, " ");
    //add class names to span.icon
    $("span.icon").addClass(list);
});  

以下のフィドルで、「.each()」がすべてのアイテムに同じように影響していることがわかります。それぞれのクラスのリストはさまざまです。これが、私の jQuery スキルの限界に到達した場所です。助けてくれてありがとう!

フィドル リンクはこちら - http://jsfiddle.net/archetypestudio/77rvc/1/

4

1 に答える 1

1

それはあなたのセレクターのせいです

$("div[class*='menu-item-'] .items").each(function() {
    var result = $(this).html();
    //replace commas to create class names
    var list = result.replace(/,/gi, " ");
    //add class names to span.icon
    $(this).next().children("span.icon").addClass(list);
});

デモ:フィドル

セレクターは dom 内の$("span.icon")すべてをターゲットspan.iconにしますが、必要なのは現在の要素span.iconの次の です。p.items

于 2013-07-25T03:20:42.777 に答える