2016-07-21 8 views
0

나는 몇 개의 자손 입력을 포함하는 행을 가지고있다. 내가 뭘하려고하면 행 내에서 버튼을 클릭하면 어린이 입력 값을 캡처합니다. 그런 다음 값을 선 아래로 더 사용할 수는 있지만 값을 올바르게 추출하는 방법을 모르겠습니다. 내가 가진 것에 대한 어떤 제안이 있니?jquery .find ('input'). 각각

<div class="row"> 
     <div class="form-horizontal"> 
     <div class="col-md-6"> 
      <div class="form-group"> 
      <div class="col-sm-10"><input type="text" value='0' class="form-control" > 
</div></div> 
    <div class="col-sm-offset-2 col-sm-10"> 
           <button type="button" class="btn btn-default updateButton">Update</button> 
          </div></div></div></div> 

$('.updateButton').on('click', function() { 
     var inputs = []; 
     $(this).parent('.row').find('input').each(function (i) { 
      inputs.push($(this).val()); 
     }); 
+3

버튼은? 그렇지 않으면 코드가 정확한지 알기가 어렵습니다. – eisbehr

+0

이 편집되었습니다. 양식 그룹과 함께 col-md-6 내에 있지만 col-sm-offset-2 div 내에 있습니다. –

답변

1

정확하게 이해하면 가까이에 있습니다. 아마도 다음과 같은 것을 원할 것입니다 :

$('.updateButton').on('click', function() { 
    var inputs = []; 
    $(this).closest('.row').find('input').each(function() { 
     inputs.push($(this).val()); 
    }); 
}); 
+0

약간의 설명은 도움이 되길. 문제점은 무엇이며 코드가 어떻게 해결합니까? – showdev

+0

'el === this each in each – charlietfl

+1

차이점은'.closest()'와 그의'.parent()'입니다. 나는'.parent()'는 일치하는 요소의 바로 위의 부모만을 보았을 것이라고 믿는다. – LGFaler

-1

당신은 가까웠습니다. .parent은 DOM 트리 하나의 레벨을 이동하기 때문에 .parents을 대신 사용하십시오.

$('.updateButton').on('click', function() { 
    var inputs = []; 
    $(this).parents('.row').find('input').each(function (i, el) { 
    inputs.push($(el).val()); 
    }); 
}); 

그러나 closest()은 더 빠르고 빠릅니다. 코드에 무엇이 잘못되었는지 지적하고 싶었습니다. 또한 parents()은 셀렉터와 일치하는 모든 조상을 가져 오므로 여러 DOM 요소를 결과로 얻을 수 있습니다 (클래스가 row 인 div가 여러 개있는 경우).

+0

그리고 이름이 말했듯이,'parents'는 당신에게 하나 이상의 요소를 줄 수 있습니다.'closest'는 당신에게 하나를줍니다. '.row' 안에'.row'가 있으면 코드가 잘못 될 수 있습니다. 따라서 이것은 대답이 아닙니다. – eisbehr

+0

@eisbehr 글쎄, 나는 당신과 동의한다. 왜냐하면 내가 마지막에 closest()를 추가 한 이유이다. 그의 코드에 무슨 문제가 있는지 지적하고 싶었습니다. 또한 나는 대답이 완전히 OP가 무엇에 달려 있다고 생각합니다. 현재 부모 (.row) div 안에 입력이없는 .row div가 있다면 어떨까요? 이 경우에도 가장 가까운 것이 작동하지 않습니다. – bipen

0

확인이 작업 예 :

$(document).on('click', '.updateButton', function() { 
 
    var inputs = []; 
 
    // Go up the DOM tree and find the closest .row, then find any input element inside this .row and iterate them 
 
    $(this).closest('.row').find('input').each(function() { 
 
    // For each input, push it's value to inputs array 
 
    inputs.push($(this).val()); 
 
    }); 
 
    alert(inputs); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="form-horizontal"> 
 
    <div class="col-md-6"> 
 
     
 
     <div class="form-group"> 
 
     <div class="col-sm-10"> 
 
      <input type="text" value='0' class="form-control" > 
 
     </div> 
 
     </div> 
 
     
 
     <div class="col-sm-offset-2 col-sm-10"> 
 
     <button type="button" class="btn btn-default updateButton">Update</button> 
 
     </div> 
 
     
 
    </div> 
 
    
 
    </div> 
 
</div>