2012-02-19 5 views
0

나는 나이를 찾고 있었고 나는 아주 간단한 질문이라고 생각하는 것에 대한 답을 찾지 못하는 것 같습니다. 을 사용하여 여러 양식 필드가 포함 된 li 복사본을 만든 다음 양식 맨 앞에 삽입합니다. 이것은 잘 작동합니다.jquery 변수 내에서 문자열 찾기 및 바꾸기

i

<ul class="form"> 
<li class="hide"> 
    <ol class="form"> 
     <li><label for="cat_id_ROWID">Category:</label> 
      <select id="cat_id_ROWID" name="cat_id[]"> 
       <option>...options...</option> 
      </select> 
     </li> 
     <li> 
      <label for="value_ROWID">Value:</label> 
      <input id="value_ROWID" name="value[]"> 
     </li> 
     <li> 
      <label for="description_ROWID">Description:</label> 
      <textarea id="description_ROWID" name="description[]"></textarea> 
     </li> 
    </ol> 
</li> 
</ul> 

상관 없음 JQuery와 내가 찾아 변수로 ROWID의 모든 인스턴스를 대체 할 일은 노력하고 있습니다 :

var newitem = $('li.hide').eq(0).clone(); 
newitem.removeClass('hide').addClass('row'); 
$(newitem).insertBefore('ul.form li:first'); 

내가 $(newitem).replace('ROWID',i);처럼 뭔가를 시도하고 있지만, 작동하지 않습니다. 어떤 도움을 주시면 감사하겠습니다! 감사.

답변

3

귀하의 newitem 변수가 jQuery를 객체가 아닌 문자열, 그래서 간단한 .replace이 작동하지 않습니다 : 같이가 someting를 사용해보십시오. newitem에서 원하는 요소를 선택하고 속성 ( 문자열)을 개별적으로 변경해야합니다.

var $newitem = $('li.hide').eq(0).clone(); 
$('[for$="ROWID"]', $newitem).each(function() { 
    $(this).attr('for', $(this).attr('for').replace('ROWID', i)); 
}); 
$('[id$="ROWID"]', $newitem).each(function() { 
    $(this).attr('id', $(this).attr('id').replace('ROWID', i)); 
}); 
$newitem.removeClass('hide').addClass('row'); 
$newitem.insertBefore('ul.form li:first'); 
2

newitem은 li이며 속성은 아닙니다.

newitem.html(newitem.html().replace("ROWID",i)); 
+1

또한 attr() 함수를 통해서만 속성을 편집 할 수 있습니다. :) 거의 같은 방식입니다! – Neysor

+0

답장을 보내 주셔서 감사합니다. 불행히도 이것은 저에게 효과적이지 않습니다. @ nachito의 해결책이있다. 일련의 객체가 아니라 html/text가되도록 jQuery 객체를 병합 할 수 있습니까? 그것은 당신이'.html()'로하려하고있는 것입니까? – leejmurphy

+1

.html()을 사용하는 경우 컨테이너의 모든 항목을 HTML로 가져 오거나 텍스트로 .text()를 사용하면됩니다. 그러면 원하는 모든 문자열 조작을 사용할 수 있습니다. 그런 다음 다시 삽입 할 수 있습니다. http://api.jquery.com/html/ 및 http://api.jquery.com/text/를보십시오. – Neysor

관련 문제