2011-06-16 66 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