使用 jQuery 单击输入单选按钮时更改 span 的文本值
Change span's text value when an input radio is clicked using jQuery
我想要文本'Rate!(62)"中的"费率"类更改为"费率!(63)' 当用户单击其中一个输入无线电时。
困难在于我有很多"星号"div,因此此更改必须仅发生在封闭的"星星"div的下一个跨度后代。
<div class="stars float-left">
<div class="rating" style="width:99%"></div>
<p><input type="radio" name="rating" id="star5" value="5"><label for="star5"></label><input type="radio" name="rating" id="star4" value="4"><label for="star4"></label><input type="radio" name="rating" id="star3" value="3"><label for="star3"></label><input type="radio" name="rating" id="star2" value="2"><label for="star2"></label><input type="radio" name="rating" id="star1" value="1"><label for="star1"></label>
</p>
<span class="rate">Rate! (62)</span>
</div>
我是jQuery的新手,这是我到目前为止想出的,但它不起作用。 我想我在路上混淆了几件事:
('.rating input:radio').click(function() {
var str_rate = $(obj).closest('span').next().find('.rate');
//TODO: parse the current value and add 1 to it
$(str_rate).html(str);
}
我完全缺少什么吗?
更新:这个jsfiddle显示了到目前为止考虑答案的进度,但它仍然无法正常工作。
您的问题是您的选择器查找span
,将其更改为:
$(obj).parents('.stars').find('.rate');
所以我们得到父stars
元素,然后我们得到关联的.rate
span
.
另外:您缺少从click
函数开始的$
。 并从它的末尾);
。
您可以按如下方式更改费率:
var rate_string = $(str_rate).text();
var rate = parseInt(rate_string.substring(rate_string.indexOf("(") + 1,rate_string.indexOf(")")),10) + 1;
$(str_rate).text("Rate! " + rate);
但请注意,我的选择器有问题,不得不修改它以获得跨度区域。
汤姆以下是我所做的所有代码更改:
<div class="stars float-left">
<div class="rating" style="width:99%"></div>
<p>
<input type="radio" name="rating" id="star5" value="5"><label for="star5"></label>
<input type="radio" name="rating" id="star4" value="4"><label for="star4"></label>
<input type="radio" name="rating" id="star3" value="3"><label for="star3"></label>
<input type="radio" name="rating" id="star2" value="2"><label for="star2"></label>
<input type="radio" name="rating" id="star1" value="1"><label for="star1"></label>
</p>
<span class="rate">Rate! (62)</span>
使用以下脚本
$('input:radio').click(function (obj) {
var str_rate = $(this).closest('div').find('span.rate');
var rate_string = $(str_rate).text();
var rate = parseInt(rate_string.substring(rate_string.indexOf("(") + 1,rate_string.indexOf(")")),10) + 1;
$(str_rate).text("Rate! (" + rate + ")");
});
我不认为我改变了 html,除了格式化。
如果你的选择器是正确的(str_rate),那么你可以通过var value = str_rate.val() (见 http://api.jquery.com/val/)来获取值。然后,您可以再次通过 .val() 方法更新该值并将其重新设置为元素,只是这次传入新值,或者像您已经在使用的那样通过 .html()。
相关文章:
- 使用Clipboard.js复制span文本
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- 当DIV中的文本高亮显示时,如何获得DIV中Span的值?(Javascript)
- Javascript/jQuery:用HTML span标记替换单引号中的文本
- jQuery将文本从span标记复制到另一个span标记
- 当我想在span标记中呈现文本时,看到span标记
- 使用jquery过滤逗号分隔的span文本
- 如何将所有文本包装成唯一的span标记
- 如果span文本为't 0
- 如何将新输入的文本包装到下面已经存在的span标记中
- 单击时切换DIV和SPAN文本
- 将输入占位符文本与span文本jquery交换
- 使用bookmarklet javascript更改span文本的一部分
- Span文本隐藏的动画DIV尽管z索引
- Javascript:使用span文本作为引用,单击页面上的链接
- 围绕span文本换行元素
- 需要使用jquery.find()在对话框窗口中动态更改span文本的帮助
- 在 jquery span 文本中使用 HTML 字符名称
- 根据显示/隐藏span标记/Javascript组设置span文本
- 使用jQuery在单击时切换span文本