在jQuery中为同一个类选择器分配不同的值

时间:2012-08-28 22:52:21

标签: javascript jquery

我不确定在这里使用什么术语,但是有没有办法在按类别选择时为多个不同的元素分配不同的值?在下面的代码中,我希望将所有带有class =“out”的元素填充其邻近(表兄)输入元素的值,并使用类“value”。 (事实上​​,它更复杂,但那是我的简化问题)。

<tr>
   <div id="samp1">
     <td>Sample 1</td>
     <td><input class="value" type="number" value="100"></td>
     <td><span class="out"></span></td>
   </div>
</tr>
<tr>
   <div id="samp2">
     <td>Sample 2</td>
     <td><input class="value" type="number" value="200"></td>
     <td><span class="out"></span></td>
   </div>
</tr>

我可以通过以下方式获得堂兄的价值:

$('.out').closest('div').find('.value').val();

但我不知道如何相对于每个元素分配这些值,而不是在多个元素中具有相同的值...例如:

$('.out').html($('.out').closest('div').find('.value').val());

给我一​​个值,但是它将文档中的第一个值(在这种情况下,#samp1中输入的值)分配给所有跨度,包括#samp2中的跨度。

我觉得我正在寻找符合

的内容
$('.out').html($(this).closest('div').find('.value').val());

但这显然不起作用...
谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

$('.out').each(function(index, elem) {

    var out = $(elem);
    out.html(out.parent().parent().find('.value').val());

});

答案 1 :(得分:1)

使用jQuery.each迭代所有.out个元素。

$('.out').each(function(){
  $(this).html($(this).closest('div').find('.value').val());
});

http://api.jquery.com/jQuery.each/

  

描述:一个通用的迭代器函数,可用于   无缝迭代对象和数组。数组和数组   具有length属性的对象(例如函数的arguments对象)   由数字索引迭代,从0到length-1。其他对象是   通过命名属性进行迭代。

答案 2 :(得分:0)

$('.out').each(function(){
   $(this).html( $(this).closest('tr').find('.value').val() );
});

另一件事是你的HTML无效。

您无法将<div>放在<tr>代码

之间