通过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评级系统,以便其他任何人也会帮助他们。
答案 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/
以防万一你认为人是一个动态的价值: