2012-06-14 5 views
1

이 ID를 찾지 만 클래스 아마의 jQuery 셀렉터

$('[id^=paritalIDname]').removeClass('[class^=partialClassName]'); 

을 제거하지 않는 요소는 요소가 partialClassNameFull 또는 partialClassNameHalf I의 클래스 이름을 가지고 있는지 여부

<div id="partialIDname-full" class="something someone partialClassNameFull"> 

처럼 보이기 때문에 그것을 제거해야합니다.

은 내가

removeClass('[class^=partialClassName*]'); 

처럼, 클래스 선택에 와일드 카드를 사용할 수 있다고 생각하지만 그건 작동하지 않습니다.

좋은 해결책은 무엇입니까? (감사합니다.) 당신은 명시 적으로 두 클래스를 모두 제거해야

+0

클래스 이름에 패턴 일치를 수행 할 수 없습니다. 대신에 "partialClassName"과 "partialClassNameFull"의 두 클래스가되도록 정렬하십시오. – Pointy

+0

안녕하세요 ... 귀하의 질문에 첫 번째 코드 줄과 유사한 질문 (http://stackoverflow.com/a/57819/414972)에 대한 답변에서 수집 할 수있는 정보를 사용하면 어떤 결과를 얻을 수 있습니까? –

+1

'$ els.filter (function() {return /partialClassName/.test(this.className)})와 같은 빠른 정규 표현식으로'filter()'를 사용할 것입니다. – elclanrs

답변

1

이 : 코멘트에의 짧 버전을 제안

또한 시도 할 수 있습니다.

 $("div[id^=partialId]").each(function() { 
      var cls = $(this).attr("class").split(" "); 

      for (var i in cls) { 
       if (/partialClass/.test(cls[i])) { 
        $(this).removeClass(cls[i]); 
        break; 
       } 
      } 
     }); 
+0

그래, 그게 내가 필요한거야 - "모든"부분 일치. Jules에게 감사드립니다! (BTW, 당신은 휴식을 제거하고 당신이 for 루프를 통과하도록하기 위해 아래로 돌아옵니다.) -하지만 당신은 그것을 알았습니다. :) – Ricalsin

0

:

$('[id^=partialIDname]').removeClass('partialClassNameFull').removeClass('partialClassNameHalf'); 

.removeClass 때문에()는 전체 클래스 이름 일치에서 작동합니다. 클래스 이름 중 하나가 없으면 아무 일도 발생하지 않습니다. 존재하지 않는 클래스를 .removeClass()하려고하면 오류가 throw되지 않습니다. 모든 부분 일치를 처리

$('[id^=partialIDname]').removeClass('partialClassNameFull partialClassNameHalf'); 
+0

약간 향상시킬 수 있습니다 : $ ('[id^= partialIDname]'). removeClass ('partialClassNameFull partialClassNameHalf'); – thebiffboff

+0

두 개의 클래스 이름 만있는 경우 질문하지 않아도됩니다. 사용자가 필요한 정보를 쉽게 찾을 수 있도록 DOM을 광범위하게 조작하는 다중 양식 페이지를 작성할 때 솔루션의 필요성이 제기되었습니다. 필터링 된 클래스 이름을 호출하여 여러 클래스를 제거하는 기능을 사용하면 다양한 단계를보다 쉽게 ​​처리 할 수있었습니다. – Ricalsin