2010-07-04 3 views
3

jQuery 용 플러그인을 작성 중이므로 사용자가 어떤 형식 으로든 플러그인에 데이터를 전달할 수 있도록 만들고 싶습니다. JSON 또는 배열 문제가 해결되었지만 데이터가 jQuery 객체인지 확인하는 데 문제가 있습니다.jQuery 객체 감지

data = $('#list li'); 
console.debug($.isPlainObject(data)); // false 
console.debug($.isArray(data));   // false 
console.debug(data[0].tagName == "LI"); // true, but see note below 

마지막 메소드는 true를 반환하지만 사용자가 자신의 데이터에 대한 LI 태그를 사용하고 있음을 보장 할 수 없습니다, 그래서 내가 이런 걸 필요가 있다고 생각 :

if ($.isjQueryObject(data)) { /* do something */ } 

사람이 알고 않는를 더 나은 방법?

+0

분명히 Ben Alman 플러그인이 있습니다. http : // /benalman.com/projects/jquery-misc-plugins/#isjquery – Mottie

답변

9

jQuery 객체 (또는 별칭 $)는 모든 jQuery를 객체는 jQuery.prototype 객체 (또는 별칭 jQuery.fn)에서 상속, 일반 constructor function이다.

객체가 예를 들어, instanceof 운영자 또는 isPrototypeOf 방법 중 하나를 사용하여, 다른 객체의 프로토 타입 체인에 있는지 확인할 수 있습니다

function isjQueryObject(obj) { 
    return obj instanceof jQuery; 
} 

또는 :

function isjQueryObject(obj) { 
    return jQuery.fn.isPrototypeOf(obj); 
} 
+0

+1 내 답변보다 철저합니다. –

+0

굉장! 감사! – Mottie

+0

@fudgey : 환영합니다. @Ken : 감사합니다! – CMS

1

jQuery 객체는 단순히 배열로 저장되고 추가 기능 및 항목이 첨부 된 요소 모음입니다. 따라서 본질적으로 jQuery 요소는 일반 배열처럼 사용할 수 있습니다.

+1

안녕하세요, 응답을 주셔서 감사합니다, 예 jQuery 개체 배열 개체로 저장되어 있지만 알 수있는 쉬운 방법을 찾으려면 노력하고있어. 다른 사람. – Mottie

+0

아, 이제는 @ CMS의 솔루션을 사용해 보는 것이 좋습니다. –

1

방법 about :

var isJq = data instanceof jQuery;