2011-06-16 52 views
0

正当我认为我在跳动JQuery时,我很难过。循环遍历。获取输入和跨度值

<div class="productAttributeValue"> 
<div class="productOptionViewRectangle"> 
<ul> 
    <li class="option"> 
     <label for="dca37e79338c28f796c3bdd4e88492f2"> 
      <input 
       type="radio" 
       class="validation" 
       name="attribute[52]" 
       value="97" 
       id="dca37e79338c28f796c3bdd4e88492f2" 
         /> 
      <span class="name">25 ML</span> 
     </label> 
    </li> 

    <li class="option"> 
     <label for="b6cc5db62235218dade2cbe8dcdfdad4"> 
      <input 
       type="radio" 
       class="validation" 
       name="attribute[52]" 
       value="98" 
       id="b6cc5db62235218dade2cbe8dcdfdad4" 
         /> 
      <span class="name">50 ML</span> 
     </label> 
    </li> 

</ul> 
</div> 
</div> 

我需要遍历Li和获取输入的值,并更改李在类=“名称”的文本。如果值= 97,那么该跨度的文本应该是50 ML(RRP $ 69.00)。

我们正在使用他们认为合适的第三方材料。需要无法将其改变为我们所需要的。

再次感谢您的帮助。欣赏它。

回答

3

你可以做到这一点简单地用这行代码:

$('.option input[value=97]').next('.name').text('50 ML (RRP $69.00)'); 

为了更容易添加更多选项,请创建一个数组来执行相同操作:

var d = [ 
    {'value':'97','text':'50 ML (RRP $69.00)'}, 
    {'value':'[your value]','text':'[your text]'} 
]; 

$(d).each(function() { 
    $('.option input[value='+this.value+']').next('.name').text(this.text); 
}); 
+0

不错的一行!如果他真的只有一个开关可以做,那么这是一个非常漂亮的方法,否则我认为其他两个答案可能更有效。 – jwegner 2011-06-16 20:25:23

+0

我实际上认为这个代码更有效率,因为它不需要在'each()'函数中放置'switch'或'if'语句,从而删除了cruft。 – js1568 2011-06-16 20:27:05

+0

我猜乍一看它确实有道理。我假定OP有某种方式,他将这些价值做为了获得这个名字。或者说后端有一个巨大的数据库(这种看起来像电子商务系统,所以可能是这样)... – jwegner 2011-06-16 20:31:39

0

只需使用一个$.each()通过他们去,并用find()找到你所需要的元素:

$('.option').each(function(i){ 
    var t = $(this).find('.name'); 
    switch ($(this).find('input').val()){ 
     case "97": 
      t.text(" 50 ML (RRP $69.00)"); 
      break; 
       case "98": 
      t.text(" text for 98..."); 
      break; 
    } 
}); 

例如:http://jsfiddle.net/niklasvh/XnAp3/

+0

感谢您的快速回复,感谢您的支持 – Barry 2011-06-16 20:58:12

0

这应该很简单,使用JQuery的每个函数。您的代码会是这样的:

$("li.option").each(function() { 
    var val = $(this).children("input").val(); 

    //Put your logic here to decide what the span should say 
    var name = "50 ML (RRP $69.00)";//Just putting this in for the example 

    $(this).children("span.name").val(name); 
}); 

将通过每个li.options的循环,抢他们的孩子的输入元素的值,然后将他们的孩子span.name元素到你想要的值。

+0

非常感谢您的快速回复。 – Barry 2011-06-16 20:57:42