2016-10-12 5 views
1

이 내 CSS의 경로입니다? 이 항목에 새 속성을 추가하고 싶습니다.프로토 타입 JS 여러 선택기

이 작동하지 않습니다

<script type="text/javascript"> 
    $$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable').setAttribute("test","test"); 
</script> 

들으

[업데이트]

이 너무 작동하지 않습니다

$$('div#product_composite_configure div.entry-edit div.buttons-set button.scalable').setAttribute("test","test"); 
+0

먼저, 프로토 타입을 사용하는 이유는 무엇입니까? 거의 1 년 만에 커밋을하지 못했습니다 ... JavaScript의 토지에서 오랜 시간이 걸렸습니다 ... –

+0

그게 내 선택이 아니야 –

+0

@JaredSmith 어쩌면 개선의 여지가없는 최적 상태에 이르렀 을까? -P – Bergi

답변

0

$$() 선택기는 선택한 요소의 배열을 반환합니다. 따라서 배열이나 사용자를 반복 할 필요가 있습니다. 내장 반복자 invoke().

예를

$$('.css_class').invoke('writeAttribute','checked',true); 

에 대한

하거나 모든 브라우저의 PrototypeJS에서 작동하기 때문에 나는 writeAttribute() 대신 setAttribute()을 사용

$$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable').invoke('writeAttribute',"test","test"); 

당신의 CSS 선택기

이 만들 수있는 몇 가지 다른 방법이 있습니다 지원 이 작품도 마찬가지입니다.

$('product_composite_configure').down('.entry-edit .buttons-set.a-right .scalable').writeAttribute('test','test'); 

$$('#product_composite_configure .entry-edit .buttons-set.a-right .scalable')[0].writeAttribute('test','test'); 

모두 HTML 구조와 원하는 동작에 따라 다릅니다. 하나의 요소 만 대상으로 지정하려는 경우 down()과 함께 ID 조회를 사용하는 것이 좋습니다. #product_composite_configure 요소 내에 자식 요소가 여러 개있을 경우를 입력하면 invoke()과 함께 $$() 선택기를 사용하면 스크립트를 다시 작성하지 않고도 새 요소가 영향을받습니다.

+0

Thx가이 정보를 공유하고 있습니다 :) –

0

왜 일을 복잡하게? 시도해보십시오 :

var selectors = ["#product_composite_configure",".entry-edit",".buttons-set",".a-right",".scalable"]; 
selectors.forEach(function(e, i) { 
    $$(e).setAttribute("test","test"); 
}); 
+0

TypeBaseController = Class.create(); –

+0

'console.log (e)'대신'e'가 무엇인지보고 싶습니다. 프로토 타입 btw에 익숙하지 않습니다 – Fourat

관련 문제