2010-06-09 3 views
2

Prototype Javascript 라이브러리에 jQuery의 :contains()과 동일한 선택기가 있습니까? 그렇지 않은 경우 특정 문자열이 포함 된 요소 목록을 선택/필터 다운하는 "프로토 타입 방식"은 무엇입니까? 다음Prototype Javascript Framework를 사용하여 특정 텍스트가있는 노드 검색

$$('#some_div dd a') 

I가 50 개 정도 링크의 어레이를 다시 얻을 수있다 예를 들어 사용

. I 은 '집'이 포함 된 링크가 필요합니다. jQuery에서이 작업을 수행 할 수 있습니다.

jQuery("#some_div dd a:contains('home')"); 

Prototype을 사용하여 비슷한 작업을 수행 할 수 있습니까? 그렇지 않은 경우 반환되는 50 개의 요소 배열을 필터링하는 우아한 방법이 있습니다.

답변

2

내가 찾을 수 있었던 최선의 (지글 거리지 않는) 대답은 findAll 방법으로 문제를 필터링하는 것입니다.

$$(selector).findAll(function(e){ return e.innerHTML.indexOf(label) != -1;}) 
+0

감사합니다. Alan, 처음으로 일했습니다. adminhtml 그리드에서 값을 강조 표시하는 데 적합합니다. 예 : findAll (function (e) { if (e.innerHTML.indexOf (". status")])을 사용하여 레이아웃을 통해 새 skin_js를 삽입합니다. 'Received, Pending Review') = 0) { e.addClassName ('긴급'); } }); }}); addColumn()의 'column_css_class'=> 'status'매개 변수 사용에 따라 다릅니다. –

1

지글 거리기에 관한 기사를 읽었습니까?

http://prototypejs.org/2010/4/5/prototype-1-7-rc1-sizzle-layout-dimensions-api-event-delegation-and-more

이 당신을 도움이 될 것입니다.

+1

+1 유용한 정보입니다. 그러나이 프로젝트에서 사용하고있는 프로토 타입의 버전을 제어 할 수 있다면 jQuery를 선택하겠다;) –

+0

나는 시제 (SizzleJS)를 라이브러리 안에 응용 프로그램 안에 넣고 프로토 타입에 포함시키지 말 것을 제안한다. '$$ (Sizzle ('# div : contains (\'hello world \ ')'))'이것은 내가 가진 최상의 것입니다 :) – RobertPitt

+1

Simple (클래스 이름이나 태그를 제외하지는 않지만 여전히 도움이 될 수 있습니다.)는 다음을 포함합니다 :'$$ ('# some_div dd a') 각 함수 (if (s.innerHTML.indexOf ('home')> = 0) {/ * do something * /}}); –