2012-04-20 5 views
0

내 문제는 다음과 같습니다. jQuery 개체를 내 XjQuery 개체로 확장하고 싶습니다. 하지만 각 함수에서 myofunc 함수가 선언되지 않은 객체를 찾습니다. 여기에 무슨 문제가 있습니까?jQuery 객체를 내 객체로 확장

환호와 each 내부 불쌍한 내 영어

XjQuery = function() 
    {   
     var jq = $("<div id=xjq>hallo</div>"); 
     $.extend(this, jq); 
    } 
    XjQuery.prototype.myfunc = function() { 
     this.append("<p>myfunc called</p>"); 
    } 
    xjq = new XjQuery(); 

    xjq.myfunc(); // this works 
    $("#maindiv").append(xjq); // works also 
    $("#maindiv").find("#xjq").each(function() { 
     $(this).myfunc(); // doesn't work 
    }); 

답변

2

죄송

this는 기본 DOM 요소이며, $(this)는 jQuery를 개체입니다. jQuery 객체를 xjQuery 객체로 "변환"해야합니다.

왜 처음에 xJquery 개체를 만드나요? jQuery plugin을 만들면 어떨까요?

jQuery.fn.myfunc = function() { 
    this.append("<p>myfunc called</p>"); 
}; 

그런 다음 $("#maindiv").myfunc()을 할 수 있습니다.

편집 : 다음

XjQuery = function(jq) 
{   
    jq = typeof jq === 'undefined' ? $("<div id=xjq>hallo</div>") : $(jq); 
    $.extend(this, jq); 
} 

당신이 할 수 있습니다하십시오 xjQuery 개체로의 jQuery 객체를 "캐스팅"하려면, 당신은이 같은 생성자 수정할 수 있습니다

$("#maindiv").find("#xjq").each(function() { 
    new XjQuery(this).myfunc(); 
}); 
+1

로켓이 올바른지를 오른쪽 jQuery에 확장 기능을 추가하는 방법은 플러그인을 사용하는 것이다. 이러한 확장은'$'객체에서 일반적인 메소드로 나타납니다. 예 :'$ ('# a-div-id'). myPluginMethod (anArgument, anotherArgument)' –

+0

[플러그인에 대한 jQuery 문서] (http://docs.jquery.com/Plugins/Authoring)는 깜빡입니다. –

+0

내 확장 기능 jQuery에서 확장 될 더 많은 다른 개체가 있고 각 개체마다 다른 멤버 함수가 있습니다 – helmi

관련 문제