这是我在表格中的tr:
<tr id="mlevel" class="__tr_class__" onclick="needFunction()">
<td class="checkbox"><input type="radio" name="membership" id="__ID__" value="__ID__" /></td>
<td class="icon"><img src="__Icon__" width="60" height="60"/></td>
<td class="name"><h2>__Name__</h2></td>
<td class="price"><h4>__Price__ for __Days__ Days</h4></td>
<td class="auto"><h4>__Auto__</h4></td>
<td class="auto"><h4>__Active__</h4></td>
</tr>
当我点击tr时,我想要选择无线电输入。我想使用jquery或简单的东西。只是不确定要走哪条路。有没有人知道这样做的简单功能?
答案 0 :(得分:6)
你真的不需要一个功能,以下应该有效:
$('tr').click(
function() {
$('input[type=radio]',this).attr('checked','checked');
}
);
<小时/> 已编辑以回应@ whatshakin的问题:
完美无缺。你能解释一下:$('input [type = radio]',this)
这会使用CSS3样式属性选择器查找匹配'input [type = radio]'的元素(在中查找input
)的type="radio"
个元素this
的上下文(this
是当前对象,在本例中为tr
)。
稍微更权威的描述/说明如何运作是api.jquery.com/jQuery
<小时/> 已编辑因为无法取消选中收音机令我感到恼火,以下更正:
$(document).ready(
function() {
$('tr').toggle(
function(){
$('input:radio', this).attr('checked',true);
},
function() {
$('input:radio', this).attr('checked',false);
}
);
}
);
感谢@Thomas(在评论中)指出我在前面的代码中做出的错误假设,即当$(this).attr('checked','checked')
评估为true时,显然''
不会评估为false。希望这种方法可以纠正早期的天真和愚蠢。
另外:演示位于jsbin
<小时/> 已编辑上述代码(使用
toggle()
的代码)以回应@TimBüthe的评论:
为什么不使用“:radio”伪选择器?
在我阅读他的评论之前,我甚至不知道的伪选择器,然后访问了jQuery API。
答案 1 :(得分:4)
这是一个整洁的切换,无需内联Javascript(和 with multiple radio buttons ):
$(function() { // <== Doc ready
$('tr').click(function(event) {
if(event.target.type != "radio") {
var that = $(this).find('input:radio');
that.attr('checked', !that.is(':checked'));
}
});
});
使用tr
$(tr).click()
元素创建 .click()
处理程序
在处理程序中使用$(this).find('input:radio')
将变量分配给tr中的单选按钮。这将查看this
的所有后代(单击tr
)并找到单选按钮。 jQuery context 在其实施中使用 .find()
,因此上一个与$('input:radio', this)
同义
将单选按钮的checked
属性设置为与其相反的属性。可以使用true
或false
检查或取消选中内容,.is(':checked)
返回true
或false
。 !that.is(':checked')
只是与当前检查状态相反。请注意,如果用户直接点击单选按钮,我们不想触发此操作,因为这会取消支票的原生效果,因此我们使用if (event.target.type != "radio")
。