Javascript 单击文本时在repeater中选中/取消选中复选框

Javascript 单击文本时在repeater中选中/取消选中复选框,javascript,jquery,asp.net,repeater,Javascript,Jquery,Asp.net,Repeater,假设我们有一个简单的asp.net转发器, 在一行中,我们有一个复选框、一个标签(记录的数据库id)和一个不可见(用于回发)以及一个文本(在tabelcell中) 现在我想让它像在windows中一样,如果你点击文本,复选框应该被选中或取消选中 是否有人对此提供了链接或解决方案,也许已经有了jQuery 编辑:正如我所说,它是一个asp.repeater。并且表格用于布局,因此使用checkbox.text属性是不可设计的(例如换行) 在呈现转发器时,将动态添加/更改复选框和文本的ID。因此,标

假设我们有一个简单的asp.net转发器, 在一行中,我们有一个复选框、一个标签(记录的数据库id)和一个不可见(用于回发)以及一个文本(在tabelcell中)

现在我想让它像在windows中一样,如果你点击文本,复选框应该被选中或取消选中

是否有人对此提供了链接或解决方案,也许已经有了jQuery

编辑:正如我所说,它是一个asp.repeater。并且表格用于布局,因此使用checkbox.text属性是不可设计的(例如换行)
在呈现转发器时,将动态添加/更改复选框和文本的ID。因此,标签解决方案实际上也不起作用。

这样的解决方案怎么样

$('.yourtableclass td').click( function( e ) {
    var cb = $(this).children('input[type=checkbox]').get(0);
    cb.checked = !cb.checked;
});

也许我不完全理解,但是为什么不在标签标签中使用html属性“for”

比如:


根据需要更改“td”。

假设您不需要jQuery和表构造

<asp:Repeater runat="server">
    <ItemTemplate>
        <asp:CheckBox runat="server" Text="your text" />
    </ItemTemplate>
</asp:Repeater>

这基本上呈现了Ricardo Vega提供的解决方案 无论您在复选框的属性文本中得到什么,都可以单击,并选中/取消选中复选框。。。因此,你应该使用 您可以(通过css)对标签的边距进行蒙皮

编辑:

在再次考虑这一点之后,还有另一个解决方案:

<asp:Repeater runat="server">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><asp:Checkbox runat="server" ID="checkbox" /></td>
            <td><asp:Label runat="server" AssociatedControlID="checkbox">Your text</asp:Label></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

你的文字

注意:您也可以使用asp:Label元素的Text属性

如果使用jQuery单击解决方案之一,请确保忽略复选框本身触发的单击事件

$('td').click(function(e){
    if (!$(e.target).is(':checkbox')) { // toggle only on non-checkbox click
        var checked = $(':checkbox', this).attr('checked');
        $(':checkbox', this).attr('checked', !checked); // toggle
    }
});

可能复选框需要是asp控件才能获取检查状态。因此,clientid将动态呈现,不能在itemtemplate中用于labelGood答案,抱歉,没有ASP知识的回答。也许最好使用最简单的方法,而不是增加一层复杂性但是+1没有使用javascript。在我的解决方案+1中没有考虑到这一点
<asp:Repeater runat="server">
    <HeaderTemplate>
        <table>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><asp:Checkbox runat="server" ID="checkbox" /></td>
            <td><asp:Label runat="server" AssociatedControlID="checkbox">Your text</asp:Label></td>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>
$('td').click(function(e){
    if (!$(e.target).is(':checkbox')) { // toggle only on non-checkbox click
        var checked = $(':checkbox', this).attr('checked');
        $(':checkbox', this).attr('checked', !checked); // toggle
    }
});