2013-06-24 6 views
0
var accordion = { 

init: function(options, elem) { 
var self = this; 

self.elem = elem; 

self.options = $.extend({}, $.fn.accordion.options, options); 

// call methods 
self.hideDD(); 
}, 

hideDD: function() { 
    var self = this; 

    $(self.elem + ' dd').hide(); 
} 

}};jquery 플러그인에서 개체를 호출하는 중 오류가 발생했습니다.

내부에 이 있으면 오류가 발생합니다. 단지 $('dd').hide()을 넣었을 때만 작동하지만 페이지의 모든 DD 요소를 선택하면 안됩니다.

왜 그대로 작동하지 않습니까? 당신의 선택은 무효로

+0

는'문자열을 self.elem'입니까? –

+0

'self '가 실제로 가리키는 점을 확인 했습니까? – CBroe

답변

0

당신은 .find() 방법을 사용한다 :

$(self.elem).find('dd').hide(); 

당신은 기본적으로 원하는 $(self.elem + ' dd') 사용 $($(self.elem).selector + ' dd')하지만 BTW JQuery와 객체에 두 번 요소를 래핑으로이의 선택 속성, 단지 잘못 jquery 객체는 더 이상 사용되지 않습니다. 그래서 가장 간단한 해결책은 self.element의 하위 항목을 검색하는 것입니다. 그런 다음 .find() 메서드 또는 다른 메서드를 .children()과 같이 직접 자손으로 사용할 수 있습니다.

+0

그게 전부 야! 구문에 오류가 있지만. $ (self.elem) .find ('dd') 여야합니다. hide(); 감사! – dzumla011

+0

@ dzumla011 thx, 오타가 수정되었습니다. –

2

self.elem + ' dd'은 문자열을 구성 중입니다. 나는 self.elem에 문자열이 없다고 생각합니다. 그것은 객체를 포함합니다. 문자열 연결의 결과는 "[object Object] dd"처럼 매우 어리 석다.

그래서, 대신, 이것이 당신의 DOM 객체의 아이를 검색하려고 :

$(self.elem).find('dd').hide(); 
관련 문제