使用next()更改文本字段的名称值

时间:2014-03-31 03:38:17

标签: jquery

通过jQuery我正在尝试更改隐藏字段的名称值。这些部分html元素有很多,所以我试图这样做,它不会工作

<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 + ']');

我输错了吗?

我通过firebug得到的错误是:

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

更新:我只是通过

解决了这个问题
var ScoreName = $(this).attr('data-score-name');
     $(this).append("<input type='hidden' name='rate[" + ScoreName + "]' value='" + score + "'>");

ps:对不起,如果我是模糊的,无论如何我只是匆忙,我会回来更新这个关于raty评级系统,以便其他任何人也会帮助他们。

3 个答案:

答案 0 :(得分:1)

由于没有其他输入字段,您可以像这样访问:

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

或者这样会更好:

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

答案 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来帮助定位正确的输入,就像您在使用< strong>类名作为选择器,因此会有很多可能的结果。

答案 2 :(得分:0)

为什么不直接使用:

$("input[name='score[]'").attr("name","score[people]")

http://jsfiddle.net/prollygeek/ffLCd/1/

以防万一你认为人是一个动态的价值:

http://jsfiddle.net/prollygeek/ffLCd/3/