2015-10-07 108 views
2

http://jsfiddle.net/7uygxcdL/7/jQuery的 - 让VAL()父母的孙子

我试图让父DIV的孙子的VAL在选择改变的。 我会包括小提琴,但根据需要可以在这里把代码...

因此在本例..如果你改变了第一选择,我想控制台日志键1和val 1

如果您更改秒,我想关键2和val 2 ...

我要对现在的jQuery查找的DOM读了..

$('.reward_select').change(function(){ 
    console.log($(this).next('input[name="reward_key"]').val()); 
    console.log($(this).next('input[name="reward_value"]').val()); 
}); 

而我的HTML:

<div class="reward_entry"> 
     <div class="reward_item"> 
      <div class="col-sm-2"> 
       <select name="item_type[]" class="reward_select"> 
        <option value="1">option 1</option> 
        <option value="2">option 2</option> 
        <option value="3">option 3</option> 
       </select> 
      </div> 

      <div class="col-sm-2"> 
       <input type="text" name="reward_key[]" value="key 1" /> 
      </div> 

      <div class="col-sm-2-offset-5"> 
       <input type="text" name="reward_value[]" value="val 1" /> 
      </div> 
     </div> 
    ==================== 
     <div class="reward_item"> 
      <div class="col-sm-2"> 
       <select name="item_type[]" class="reward_select"> 
        <option value="1">option 1</option> 
        <option value="2">option 2</option> 
        <option value="3">option 3</option> 
       </select> 
      </div> 

      <div class="col-sm-2"> 
       <input type="text" name="reward_key[]" value="key 2" /> 
      </div> 

      <div class="col-sm-2-offset-5"> 
       <input type="text" name="reward_value[]" value="val 2" /> 
      </div> 
     </div> 
    </div> 
+0

http://jsfiddle.net/abhitalks/7uygxcdL/9/ – Abhitalks

+0

http://jsfiddle.net/7uygxcdL/12/ – guradio

回答

5

您的选择器不正确。 select元素不会立即跟随兄弟input。您可以更改您的代码:

$('.reward_select').change(function() { 
 
    console.log($(this).parent().next().children().val()); 
 
    console.log($(this).parent().next().next().children().val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="reward_entry"> 
 
    <div class="col-sm-2"> 
 
    <select name="item_type[]" class="reward_select"> 
 
     <option value="1">option 1</option> 
 
     <option value="2">option 2</option> 
 
     <option value="3">option 3</option> 
 
    </select> 
 
    </div> 
 
    <div class="col-sm-2"> 
 
    <input type="text" name="reward_key[]" value="key 1" /> 
 
    </div> 
 
    <div class="col-sm-2-offset-5"> 
 
    <input type="text" name="reward_value[]" value="val 1" /> 
 
    </div>==================== 
 
    <div class="col-sm-2"> 
 
    <select name="item_type[]" class="reward_select"> 
 
     <option value="1">option 1</option> 
 
     <option value="2">option 2</option> 
 
     <option value="3">option 3</option> 
 
    </select> 
 
    </div> 
 
    <div class="col-sm-2"> 
 
    <input type="text" name="reward_key[]" value="key 2" /> 
 
    </div> 
 
    <div class="col-sm-2-offset-5"> 
 
    <input type="text" name="reward_value[]" value="val 2" /> 
 
    </div> 
 
</div>

如果你可以改变你的HTML标记,我建议包括input元素作为孩子元素与col-sm-2类:

$('.reward_select').change(function() { 
 
    $(this).nextAll().children().each(function() { 
 
    console.log($(this).val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="reward_entry"> 
 
    <div class="col-sm-2"> 
 
    <select name="item_type[]" class="reward_select"> 
 
     <option value="1">option 1</option> 
 
     <option value="2">option 2</option> 
 
     <option value="3">option 3</option> 
 
    </select> 
 
    <div class="col-sm-2"> 
 
     <input type="text" name="reward_key[]" value="key 1" /> 
 
    </div> 
 
    <div class="col-sm-2-offset-5"> 
 
     <input type="text" name="reward_value[]" value="val 1" /> 
 
    </div> 
 
    </div>==================== 
 
    <div class="col-sm-2"> 
 
    <select name="item_type[]" class="reward_select"> 
 
     <option value="1">option 1</option> 
 
     <option value="2">option 2</option> 
 
     <option value="3">option 3</option> 
 
    </select> 
 
    <div class="col-sm-2"> 
 
     <input type="text" name="reward_key[]" value="key 2" /> 
 
    </div> 
 
    <div class="col-sm-2-offset-5"> 
 
     <input type="text" name="reward_value[]" value="val 2" /> 
 
    </div> 
 
    </div> 
 
</div>

+1

这很酷...!有没有办法添加一个特定的类查找太多,只是这样我的代码种类的评论本身... – Beertastic

+0

@Beertastic如果你能够改变HTML标记检查我的选择。 –

+0

@Beertastic更新第二个例子,使用迭代获取所有“输入”值。 –

1

你可以试试这个。也许不是最简单的方法。

$('.reward_select').change(function(){ 
    console.log$(this).parent().next().children().val()); 
    console.log$(this).parent().next().next().children().val()); 
});