1

我有一个从 CRM 生成的在线菜单。每个项目都可以由客户在 CRM 中使用 3 个值之一进行分类。所以我已经研究出如何获取值并将它们写入正确的位置。让我感到困惑的是遍历每个项目所需的特异性水平,找到类名,然后将它们应用于每个项目而不影响其他菜单项。

我可以使用 CRM 标签,将项目 ID 写入每个类,这样我就可以解析每个类并使用父类仅影响该项目的跨度... 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);
});

演示:小提琴

您的选择器$("span.icon")针对span.icondom 中的所有内容,而不是您需要的是当前元素span.icon的下一个。p.items

于 2013-07-25T03:20:42.777 回答