2011-02-23 37 views
0

我想检查,并取消(切换)收音机时“TD”是点击,但保留默认输入事件jQuery的事件“检查”事件

<table> 
    <tr> 
     <td> 
      <input type='radio'> 
     </td> 
    </tr> 
</table> 

我的代码尝试:

尝试1: http://jsfiddle.net/UJXRu/

尝试2: http://jsfiddle.net/UJXRu/1/

尝试3: http://jsfiddle.net/UJXRu/2/

前瞻:

$("td").click(function(e) { 
    if (!$(e.target).is("input")) { 
     var bool = !$(this).children("input").is(':checked'); 
     $(this).children("input").attr("checked", bool) 
    } 
    else{ 
     var bool2 = !$(e.target).is(':checked'); 
     $(e.target).attr('checked',bool2); 
    } 
}); 
+0

不太明白你想达到什么。你想在单击td或单选按钮时检查单选按钮吗?你能解释一下你想要发生什么,当你点击td,当你点击单选按钮时?谢谢。 – Luke 2011-02-23 20:18:08

+0

我想单击td或单选按钮时想检查单选按钮 – Luccas 2011-02-23 20:19:38

+0

您是否希望单选按钮的行为类似于复选框? – 2011-02-23 20:32:32

回答

3

尝试了这一点..上jsfiddle

$("td").click(function(e) { 
    if (e.target.type !== 'radio') { 
     $(this).find(":radio").trigger('click'); 
    } 
}); 

例。

如果你想使TD和单选按钮切换收音机checked属性,你可以做这样的事情:

$("td").toggle(function() { 
    $(this).children(":radio").attr("checked", true); 
}, function() { 
    $(this).children(":radio").attr("checked", false); 
}); 

例如在jsfiddle

+0

谢谢,工作! – Luccas 2011-02-23 20:38:12

0

为什么不直接叫输入标签的默认点击事件:

$(this).children("input").click(); 
+0

它不起作用 – Luccas 2011-02-23 20:15:16

0

响应您的评论:

“我想单击td或单选按钮“

”时检查单选按钮

应该是简单的:

$("td").click(function(e) { 
    $(this).find("input").attr("checked", true); 
}); 

http://jsfiddle.net/lukemartin/UJXRu/3/

0

这个答案不把单选按钮的检查(用户真的不喜欢),并试图提供一个更现实的场景。

$("tr.myRow").click(function(e) { 
    // dont override the radio inputs default 
    if ($(e.target).hasClass("childRadio") || e.target.tagName == 'LABEL') 
     return; 

    // find the child radio, and if it's not checked, check it. 
    var $childRadio = $("input.childRadio", $(this)); 
    if (!$childRadio.attr('checked')) { 
     $childRadio.attr('checked', 'checked'); 
    } 
}); 

我去了添加标签的麻烦,并已使用的名称属性,以便单选按钮组合(这是有一个单选按钮的原因)。因此,尽可能保持默认行为,并且只是增加点击来选择特定的子单选按钮。

html示例如下。

<tr class="myRow"> 
    <td> 
     <div>Some Content</div> 
     <div> 
      <label for="radio1">Radio 1 Label</label> 
      <input type='radio' id="radio1" class="childRadio" checked="checked" name="Group1"> 
     </div> 
     <div>More Content</div> 
    </td> 
</tr> 
<tr class="myRow"> 
    <td> 
     <div> 
      <label for="radio2">Radio 2 Label</label> 
      <input type='radio' id="radio2" class="childRadio" name="Group1"> 
     </div> 
    </td> 
</tr>