2014-03-31 56 views
0

通過jQuery我試圖更改隱藏字段的名稱值。有很多這些部分HTML元素,所以我試圖做這樣的,它不會工作使用next更改文本字段的名稱值

<section> 
    People: 
    <div data-score-name="people" class="options"> 
     <img src="star-on.png" alt="1" title="bad"> 
     <img src="star-on.png" alt="2" title="poor"> 
     <img src="star-on.png" alt="3" title="regular"> 
     <img src="star-half.png" alt="4" title="good"> 
     <img src="star-off.png" alt="5" title="gorgeous"> 
     <input type="hidden" name="score[]" value="3.5"> 
    </div> 
</section> 

中的JavaScript:

var ScoreName = $(this).attr('data-score-name'); 
$('.options').next().attr('name', 'score[' + ScoreName + ']'); 

我在打字錯了?

我正在通過螢火得到的錯誤是:

TypeError: $(...).next(...).attr(...) is undefined 

更新:我解決了這個由只做

var ScoreName = $(this).attr('data-score-name'); 
    $(this).append("<input type='hidden' name='rate[" + ScoreName + "]' value='" + score + "'>"); 

PS:對不起,如果我是模糊的,無論如何我只是匆忙之中,我會回來更新這個關於評級系統的評論,這樣任何其他人都會幫助他們。

+1

你會提交完整的代碼嗎?這是指什麼? – ProllyGeek

+0

本來它的完整代碼,我試圖做的最終結果是改變 to

+0

代碼中存在一些遍歷問題...除此之外,它很好http://jsfiddle.net/arunpjohny/MuN7P/1/ –

回答

0

我認爲這個jQuery放在一個事件處理程序內?我將演示如何改變這種價值與點擊處理程序演示緣故

$('div.options').click(function() { 
    var scoreName = $(this).data('score-name'); // same as .attr('data-score-name'); 
    var newName = 'score[' + ScoreName + ']'; 
    $(this).find('input[name="score[]"]').attr('name', newName); 
}); 

在你說你有很多section元素與這些隱藏場的情況下,你真的需要使用this幫助瞄準正確的輸入,因爲在你的問題中,你使用類名稱作爲選擇器,所以會有很多可能的結果。

1

至於有沒有其他輸入字段,你可以像這樣訪問:

$('.options').next('input').attr('name', 'score[' + ScoreName + ']'); 

或者這樣會更好:

$('.options').next('input[name="score[]"').attr('name', 'score[' + ScoreName + ']');