2013-07-25 3 views
1

CRM에서 생성되는 온라인 메뉴가 있습니다. 각 항목은 3 가지 값 중 하나를 사용하여 CRM 내에서 클라이언트별로 분류 할 수 있습니다. 그래서 나는 값을 얻고 그것을 적절한 장소에 쓰는 법을 배웠습니다. 나를 괴롭혔던 것은 각 항목을 반복하고 클래스 이름을 찾은 다음 다른 메뉴 항목에 영향을주지 않고 각 항목에 적용하는 데 필요한 특이성의 수준입니다.jQuery - .each() 함수를 사용하여 문자열을 기반으로 항목에 클래스 추가

각 클래스에 항목 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/

답변

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); 
}); 

: Fiddle

당신의 선택은 $("span.icon") 목표는 DOM의 모든 span.icon, 당신이 필요로하는 대신에 무엇 인 현재 .itemsp에있는 span.icon 요소.

+0

도움 주셔서 감사합니다. Arun! 나는 그것이 단순한 무엇인가 기뻤다. – Archetype

관련 문제