2011-03-16 4 views
0

jQuery의 플러그인 아키텍처를 사용하여 js 파일에 간단한 "div"요소를 텍스트 상자에 추가하는 코드 줄이 있습니다. 작업은 너무 단순 해 보이지만 어디서 잘못 될지 알 수는 없습니다.jquery : 문서로드시 텍스트 상자에 추가

이것은 testplugin.js에서입니다

<div style="margin-top:50px"> 
    Search: <input id="searchbox" type="text" /><br /> 
</div> 
... 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#searchbox').testplugin(); 
}) 
</script> 


이 시점에서

init : function(options) 
{ 
    // some initialization 

    // iterate through all the jquery objects 
    return this.each(function() { 
     $(this).append('<div>Sample Text</div>'); 
    }); 
} 

파일 내 html 파일에서 조각, 나는 $ (이)가 참조하는 확신 올바른 개체 (나는 id를 경고하려고 시도했다). 또한 Firefox에서 "소스보기"를 시도 할 때 새로 추가 된 div도 볼 수 있습니다 (그러나 실제 GUI에서는 볼 수 없습니다). 그러나 Internet Explorer에서 "메서드 또는 적절한 액세스에 예기치 않은 호출"오류가 발생합니다.

내가 뭘 잘못하고 있니? 아니면 내가이 일을하기 위해 무엇을해야합니까?

감사합니다. Erwin

답변

2

Erwin, 저는 당연히 사양에 따라 입력 요소 내부에 div 요소를 넣을 수는 없습니다. 이것은 아마도 IE 오류 &의 원인 일 수 있습니다. 브라우저가로드 될 때 아무 것도 볼 수없는 이유입니다.

.val ('test'); append() 대신 &을 사용하면 .addClass ('yourcssclass')와 동일하게 작업 코드가 발생할 수 있습니다. 또는 다른 "합법적 인"DOM 작업.

+1

"사양에 따라 입력 요소의 div 요소를 넣을 수 없다는 것이 확실합니다."LOL awesome. – mattsven

+0

append() 함수를 잘못 이해 했어야합니다. 나는 이것이 대상 요소 옆에 형제를 추가 할 것이라고 생각했습니다. – Erwin

+0

내가 찾고 있던 것이 after() 메소드입니다. 머리를 주셔서 감사합니다! – Erwin

1
init : function(options) 
{ 
// some initialization 

// iterate through all the jquery objects 
return this.each(function() { 
    $(this).val('Sample Text'); 
}); 
} 

당신이 텍스트 상자 플러그인 여전히 a 등 elemets 같은 div에 작동합니다 '이 샘플 텍스트'내부의 텍스트를 만들려고 노력하는 경우이 코드가 도움이 될 것입니다 ...

+0

도움 주셔서 감사. 실제로 해결책을 찾았습니다. 나는 append()가 형제를 생성한다고 가정 할 때 틀렸다. 위에서 언급 한 것처럼 append()를 after()로 변경 했으므로 이제는 괜찮습니다. – Erwin

관련 문제