单击表行时更新子元素类
Updating child element classes when table row is clicked
我有一个产品选项表,每个tr
都是一个选项。默认情况下选择一个,要选择另一个,必须在提交表单之前选中单选按钮。这很容易,但整个tr
必须可单击并相应地检查单选按钮。
我想我已经设法使用以下脚本使其工作:
$('.product-options tr').click(function() {
$(this).find('td input[type=radio]').prop('checked', true);
});
除此之外,我还需要在tr
中添加一类.selected
。我尝试使用以下代码,但我还需要检查另一个tr
是否已经具有一类.selected
并将其删除。
$('.product-options tr').click(function() {
$(this).find('td input[type=radio]').prop('checked', true);
$(this).toggleClass('selected', true);
});
显然,这只会在您单击相同的单选按钮时切换类。这就是我有限的JavaScript知识失败的地方。谁能帮忙?
最后,我还使用一个名为 uniform 的插件.js它允许选择/单选/复选框完全可定制。当这包装一个div时,在无线电输入周围添加一个跨度,一类.checked
被添加到跨度中以切换选中/未选中的样式。仅当您直接单击输入时,这才会更改。因此,我还需要考虑与 tr.selected
类类似的脚本,以便在单击tr
的任何部分时,自定义单选按钮也具有更新的类。
对于javascript生成的无线电的引用标记是:
<div class="radio">
<span>
<input type="radio" name="" />
</span>
</div>
编辑:这是一个带有制服的代码笔.js它应该更好地展示问题:
http://codepen.io/moy/pen/yeGRmO
谢谢,真的希望有人能帮忙。这似乎很简单...但是当它"分层"时,我有点迷茫!:)
如果我理解正确,您可以简单地访问tr的兄弟姐妹并将选中的无线电设置为false。
$('.product-options tr').click(function() {
$(this).find('td input[type=radio]').prop('checked', true);
$(this).toggleClass('selected', true);
$(this).siblings().find('td input[type=radio]').prop('checked', false);
$(this).siblings().removeClass('selected');
});
这应该找到所有收音机并将它们全部放在 false 上,除了您单击的行。
更新
要使用 uniform,您可以在更改属性时直接调用 $.uniform.update()
。
$(function() {
$('input[type="radio"]').uniform();
$('.product-options tr').click(function() {
var tr = $(this),
radio = tr.find('td input[type=radio]'),
siblings = tr.siblings(),
otherRadios = siblings.find('td input[type=radio]');
tr.addClass('selected');
siblings.toggleClass('selected', false);
$.uniform.update(radio.prop('checked', true));
$.uniform.update(otherRadios.prop('checked', false));
});
});
演示
试试这个:
$('.product-options tr').click(function () {
$(this).find('td input[type=radio]').prop('checked', true);
$(this).closest('table').find('tr.selected').find('span.checked').removeClass('checked');
$(this).closest('table').find('tr.selected').removeClass('selected');
$(this).addClass('selected'); $(this).find('td:last').find('span').addClass('checked');
});
检查此链接
相关文章:
- Javascript更新孙窗口中的表单元素
- Mongoose-在更新中删除数组元素
- Angular没有根据模型更新我的选择元素
- 元素未使用当前玩家操作进行更新
- d3在数据更新时错误地附加了dom元素
- Javascript元素更新侦听器
- JS设置间隔在函数中,该函数将同时调用,从而导致错误的元素更新
- 当 JQuery 元素更新时,挖空 JS 自定义绑定不会更新
- 使用新的数组元素更新backbone.js模型
- 如何在后台进行ajax请求和html元素更新
- 使用ajax dom元素更新视图模型
- 如何根据另一个元素更新一个元素的宽度
- 聚合物:不使用firebase元素更新firebase数据库
- 防止元素更新- JQuery
- 从父元素更新道具时出错(执行removeChild失败)
- jQuery的hasClass()函数在元素更新后不起作用
- 通过Raphael.JS元素更新HTML信息
- 通过本机select元素更新belongsTo关系
- 使用jQuery change方法从Javascript对象和html select元素更新内容
- Angular如何在每个摘要的DOM元素更新后触发回调函数