2009-02-06 4 views
2

jQuery.extend를 사용하여 DOM 요소와 같은 객체에 고유 한 맞춤 메소드를 추가 할 수 있지만 Prototype의 Element.extend는 모든 DOM 요소 도우미 메소드를 목적. 그것은 내가 따라온 기능입니다. 예를Prototype의 Element.extend에 해당하는 jQuery는 무엇입니까

this.panel = document.createElement('div'); 

를 들어

나는 this.panel 그 새로운 사업부에 대한 참조 할뿐만 아니라 그것에 부착 된 편리한 요소 래퍼 방법이있다.

내가 jQuery를 함께의 createElement에 대한 호출을 래핑 근처에 뭔가를 얻을 수있다()

this.panel = jQuery(document.createElement('div')); 

그러나 그것은 하나의 배열을 반환합니다. 나는 그저 그 요소를 원해.

다른 사용자는 어떤 작업을 수행합니까?

TIA

팻 롱

답변

5
또한 당신이 JQuery와 기능을 확장하려는 경우

jQuery 정책은 네이티브 DOM 객체를 확장하지 않는 것입니다.

jQuery 안에 요소를 배치하는 것이 좋습니다. 결과는 배열이 아니며 jQuery 객체 (배열과 비슷 함)이지만 확장 된 jQuery 메서드를 사용할 수 있습니다.

힌트로 요소를 만들려면 jQuery HTML 구문 분석 기능을 사용하면 DOM 작성 메서드를 사용하는 것보다 복잡한 DOM 트리를 더 쉽게 만들 수 있습니다.

은 아마 당신은 분명히 "jQuery를 정책 기본 DOM 객체를 확장하지 않을 것이다"고 만들기위한 그

// Creates a DIV node with some attributes and text inside, and append it to the body 
this.panel = jQuery('<div class="myClass" id="myPanel">My panel</div>').appendTo('body'); 
+1

감사합니다 같은 것이, 수치 내가 Prototyopes 접근 방식을 좋아합니다. 저는 동적 HTML 문자열을 파싱하기 위해 jQuery를 사용하는 것을 좋아하지 않습니다. 그냥 너무 오래된 학교처럼 보이는데, innerHtml을 사용하는 것 같습니다. –

+1

예. 오래된 학교처럼 보입니다. 그렇습니다. 그러나 실제로 모든 DOM 노드를 실제로 손으로 만들고 연결하는 것보다 훨씬 간단합니다. 그리고 innerHtml과는 달리 jQuery가 모든 파싱을하기 때문에 실제로는 좋은 DOM 트리를 얻는다. –

+0

그리고 노드를 하나의 문자열로 추가하면 코드가 훨씬 빨라집니다. – wheresrhys

0

사용 jQuery 오브젝트에 하나 개의 요소를 선택할 수 있습니다

그래서
$(selector).eq(0): //this will select the first element 

귀하의 경우 :

this.panel = $(document.createElement('div')).eq(0); 

그러나 당신은 또한 할 수 :

this.panel = $('<div></div>'); 

이렇게하면됩니다.

<input name='bla'> 
<input name='foo'> 

$('input').myOwnFunction(); 

가 알려줍니다 :이 같은 것을 할 경우

jQuery.fn.myOwnFunction = function(){ 
this.each(function() { 
    alert($(this).attr('name')); 
} 
} 

: '즐'다음 'foo는'

관련 문제