2011-11-11 2 views
1

Mootools의 Class을 사용하는 방법을 배우고 있으며 전달 된 요소가 단일 요소 (예 : $('foo'))인지 요소 인스턴스 (예 : $$('.class'))인지를 파악하는 방법을 알아 내려고합니다.전달 된 요소가 하나 이상의 요소인지 어떻게 알 수 있습니까?

typeOf를 사용하려고 시도했지만 두 예제 모두 "개체"유형을 반환합니다.

많은 Mootools 함수가 Element 인스턴스와 Elements 인스턴스에 모두 적용될 수 있지만 클래스는 수신중인 내용을 알고 있어야합니다. 그렇지 않으면 전달 된 모든 요소를 ​​반복하는 것을 알 수 없습니다. 예.

둘을 구별 할 수있는 방법이 있습니까?

+0

정말요? 'typeOf ($$ ("a")); // 요소들. 또한 일반적으로 .length 속성과 배열과 같은 메서드는 물론 각 요소를 통해 배열에 매핑되는 많은 요소 메서드를 갖습니다. 단일 요소는'typeOf (document.getElement ("a")); // 요소'. 나는 (if (elsArray && elsArray.length) {...}'하는 경향이 있지만 객체에 길이의 속성을 가진 단일 요소가 있으면 실패 할 수 있습니다. 재미 체크 :'instanceOf ($$ ("a"), Elements); // true' :) –

답변

2

mootools의 typeOf 기능이 적절해야합니다. 문제가 다른 곳에서 발생하지 않았는지 확인하기 위해 코드를 확인하는 것이 좋습니다.

<div class="myClass"></div> 
<div class="myClass"></div> 
<div class="myClass"></div> 
<div class="myClass"></div> 

<div id="myId"></div> 

console.log(typeof $$('.myClass').each); // function 
console.log(typeof $('myId').each); // undefined 

그러나 Mootools의 함수 typeOf (문서 : http://mootools.net/docs/core/Core/Core#Core:typeOf)가 제공되어야 함은 또한 Mootools의 확장 어레이 원형의 일부인 '는 각각'기능의 존재를 확인할 수 있으며, 상기 당신에게 최고의 정보.

console.log(typeOf($$('.myClass'))); // elements 
console.log(typeOf($('myId'))); // element 

여기를 참조하십시오 : http://jsfiddle.net/49DwN/

당신이 자바 스크립트 (I 위의 예에서 사용했다) 연산자 typeof 내장,하지만 다음과 같이 moootools이 typeOf을 기능을 사용하지 않을해야합니다 또한 요소 그룹에 대한 typeOf 반환 값은 "element * s *"이며 단일 요소는 "요소"입니다. 여기서 "s"는 유의하십시오. Javascript의 typeof 연산자는 두 경우 모두 "object"를 반환합니다.

+1

mootools는 실제로 typeOf와 instanceOf를 가지고 있지만 논리가 깨질 수 있습니다. 프로토 타입을 암시 적으로 검사해야합니다. '' –

+0

'

i break js
'-'typeof $ ('myId'). 각각 == 'string''- 당신이 'function'을 테스트한다면 깨지 않습니다.''typeOf''는 OP의 예에서 사용하는 것이 안전합니다. 'each '에 대한 점검은 불필요한 또는 대안적인 접근법이다. –

+0

'console.log (typeOf ($$ ('.a')))); // elements' ... 좋은 세상, MooTools가 자체적으로 가지고 있다는 것을 깨닫지 못해서 네이티브 typeOf를 사용했을 것입니다. 두 분 모두에게 감사드립니다. @DimitarChristoff, @Chris –