2010-03-31 5 views
0

도와주세요!jquery 문제 : 요소의 minipulating val() 속성

한 페이지에 사업부에서 어떤 형태의 요소를 가지고 : 나는, #template의 사본을 입력의 값을 조작하고 #template 후를 삽입 할 jQuery를 사용하여

<div id="box"> 
    <div id="template"> 
     <div> 
     <label for="username">Username</label> 
     <input type="text" class="username" name="username[]" value=""/> 
     <label for="hostname">hostname</label> 
     <input type="text" name="hostname[]" value=""> 
     </div> 
    </div> 
</div> 

때문에

<div id="box"> 
    <div id="template"> 
     <div> 
     <label for="username">Username</label> 
     <input type="text" class="username" name="username[]" value=""/> 
     <label for="hostname">hostname</label> 
     <input type="text" name="hostname[]" value=""> 
     </div> 
    </div> 
     <div> 
     <label for="username">Username</label> 
     <input type="text" class="username" name="username[]" value="paul"/> 
     <label for="hostname">hostname</label> 
     <input type="text" name="hostname[]" value="paul"> 
     </div> 
</div> 

는 아마 이것에 대해 잘못된 방향으로 가고 있지만 페이지에 불을 지르고에서 자바 스크립트 코드 실행의 다음 테스트 비트가 입력의 값을 변경하지 않는 것 : 결과는 같을 것이다.

var cp = $('#template').clone(); 

cp.children().children().each(function(i,d){ 
    if(d.localName == 'INPUT'){ 
     $(d).val('paul'); //.css('background-color', 'red'); 
    } 
    }); 
$("#box").append(cp.html()); 

"//css('background-color ','red '); 입력이 빨간색으로 바뀝니다.

답변

0

호스트 이름 입력에 "호스트 이름"클래스를 지정하여 HTML을 약간 수정했습니다. JS

<div id="box"> 
    <div id="template"> 
     <div> 
      <label for="username">Username</label> 
      <input type="text" class="username" name="username[]" value=""/> 
      <label for="hostname">hostname</label> 
      <input type="text" class="hostname" name="hostname[]" value=""> 
     </div> 
    </div> 
</div>​​​ 

그리고 여기 : 다음은 업데이트 된 HTML의 또한

$(function() { 
    $('#template div:first').clone().appendTo("#box"); 
    $('#box div:last .username').val("Paul"); 
    $('#box div:last .hostname').val("google"); 
}); 

, 당신은이 http://wiki.github.com/nje/jquery/jquery-templates-proposal

+0

감사합니다! 그게 바로 제가 찾고 있던 것입니다. – P4ul

1

왜 그냥과 같이 루트로 복제하여 입력 요소에 대한 선택기를 사용

$("input", cp).val("paul"); 

을 대신 children에 대한 호출을 사용하는?

편집 : 복제본을 호출 할 때 jQuery 1.4처럼 보이지만 마크 업 대신 요소의 데이터도 복사해야합니다. 그 값을 직접 복사해야하는 문제를 해결할 수 있습니다. 관련 문서 (강조 표시) :

withDataAndEventsA 이벤트 핸들러를 요소와 함께 복사해야하는지 여부를 나타내는 부울입니다. jQuery 1.4부터는 요소 데이터도 복사됩니다.

+0

안녕 R0MANARMY에서 jQuery를 템플릿 제안을 볼 걸릴 수도 있습니다, 당신의 도움을 주셔서 감사합니다 , 나는 $()의 두 번째 인수로 컨텍스트를 전달할 수 있다는 것을 알지 못했습니다. 하지만이 방법을 사용하려고 시도했으나 작동하지 못했습니다. 새로 삽입 된 입력 값이 설정되지 않았습니까? var cp = $ ('# template') .clone(); $ ("input", cp) .val ("paul"); $ ("# box"). append (cp.html()); 건배, – P4ul

관련 문제