2013-05-12 1 views
0

형성 :추가 입력 필드를 내가 이것을 사용하려고했다

Fiddle

그러나 그가 사용하는 jQuery를 버전은 상당히 오래된 것 같다.

그러나 코드에서 볼 수있는 유일한 필수 업데이트는 .live().on()으로 변경하는 것입니다. 그러나 제거 단추는 내가 변경 한 경우 작동하지 않습니다.

$('#remScnt').on('click', function() { 
      if(i > 2) { 
        $(this).parents('p').remove(); 
        i--; 
      } 
      return false; 
    }); 

누구나 이유가 무엇입니까?

+0

() 메소드는, 당신은 ID가 고유해야하기 때문에도 될 수있는 1.4.3 버전 – Sam

+0

을 사용하고 jQuery를 1.7에 추가되었습니다! – hjpotter92

+0

@Sam 나는 그 코드가 나에 의해 쓰여지지 않았다는 것을 알았다. –

답변

1
  1. ID는
  2. 위임은 새로 추가 된 내용에 필요 (이 비록 문제를 일으키는되지 않음) 고유해야합니다.

jQuery를

$(function() { 
    var scntDiv = $('.p_scents'); 
    var i = $('.p_scents p').length + 1; 

    $('#addScnt').on('click', function() { 
     $('<p><label for="p_scnts"><input type="text" class="p_scnt" size="20" name="p_scnt_' + i + '" value="" placeholder="Input Value" /></label> <a href="#" class="remScnt">Remove</a></p>').appendTo(scntDiv); 
     i++; 
     return false; 
    }); 

    $('.p_scents').on('click', '.remScnt', function() { 
     if (i > 2) { 
      $(this).parents('p').remove(); 
      i--; 
     } 
     return false; 
    }); 
}); 

HTML

<h2><a href="#" id="addScnt">Add Another Input Box</a></h2> 

<div class="p_scents"> 
    <p> 
     <label for="p_scnts"> 
      <input type="text" id="p_scnt" size="20" name="p_scnt" value="" placeholder="Input Value" /> 
     </label> 
    </p> 
</div> 

이 완벽하게 작동합니다 : 그것은 문자열에서 만든 재 작성, 몇되지 않는 방법, 동적 요소를 필요로 같은 http://jsfiddle.net/uFkPx/

+2

'size()'는 (은)는 [deprecated] (http://api.jquery.com/size/) 현재 jQuery 1.8 – vher2

+0

@ vher2 Ah! 감사합니다.) – hjpotter92

+0

@vher2'size()'가 더 이상 사용되지 않으면, 새로운 것이 무엇입니까? 'length()'? –

1

가 보이는 , 모든 부모를 타겟팅(), 같은 ID의 등 :에

$(function() { 
    var scntDiv = $('#p_scents'), 
     i  = $('#p_scents p').length + 1; 

    $('#addScnt').on('click', function (e) { 
     e.preventDefault(); 
     var p = $('<p />'), 
      l = $('<label />', {for: 'inp_'+i}), 
      j = $('<input />', {type: 'text', 
           id: 'inp_'+i, 
           size: 20, 
           name: 'p_scnt_' + i, 
           placeholder: 'Input Value' 
           }), 
      a = $('<a />', {href : '#', 
          id: 'remScnt_' + i, 
          'class' : 'remScnt', 
          text: 'Remove' 
          }); 

     p.append(l.append(j), a).appendTo(scntDiv); 
     i++; 
    }); 

    scntDiv.on('click', '.remScnt', function (e) { 
     e.preventDefault(); 
     if (i > 2) { 
      $(this).closest('p').remove(); 
      i--; 
     } 
    }); 
}); 

FIDDLE

관련 문제