【问题标题】:Jquery get Checkbox in spanJquery在span中获取复选框
【发布时间】:2014-07-23 15:42:57
【问题描述】:

我有一些 jquery 代码,当用户单击 div 时,我试图在其中选择一个复选框。我的小提琴如下:

http://jsfiddle.net/5PpsJ/

我想出的是这个,但它没有选择跨度内的复选框:

$('span[name="' + current + '"]').closest('input:checkbox[id="CB_Selected"]').prop('checked', true);

完整代码在链接中

我的问题是如何根据其唯一名称获取跨度内的选择框并选择它?

n.b 我已经注释掉了 jquery 中的隐藏函数,以便直观地查看复选框是否被选中

编辑 我的 ID 是相同的,因为我在 ASP.NET 内部工作并使用转发器来创建小提琴中显示的 HTML。在中继器内部,我无法设置项目的 ID,因为中继器控件不允许我使用 Eval(datasource) 设置 ID

【问题讨论】:

  • 您的小提琴标记无效。 ID 应该是唯一的 one 并且在任何给定时间页面上只有一个 元素。
  • 您正在使用 ASP.NET 那么您为什么没有正确标记它。还要添加您的转发器标记。

标签: javascript jquery html asp.net


【解决方案1】:

ID 是唯一的。你只需要这个:

$("#CB_Selected").prop('checked', true);

其实,你甚至不需要 jQuery:

document.getElementByID('CB_Selected').checked = true;

正如其他人所指出的,如果有多个复选框,最好使用类而不是 ID。另外,input 不能有孩子,所以closest 函数不起作用;你的意思是find(针对儿童)还是siblings

【讨论】:

  • +1 请注意,虽然这是正确的,但由于 OP 的无效标记(在多个复选框上使用相同的 ID),这将不起作用。
  • 我觉得我做不到。我在 ASP.net 内部工作并使用中继器动态创建复选框,因此无法设置复选框的 ID,因为中继器项目 ID 不能在中继器内设置
【解决方案2】:

不要为多个复选框提供相同的 ID(这会使您的 html 无效),而是在复选框上使用一个类。变化:

<input id="CB_Selected" type="checkbox" name="ctl00$ContentPlaceHolder_Content_Wraper$ctl01$Repeater_Selected$ctl00$CB_Selected" />

收件人:

<input class="CB_Selected" type="checkbox" name="ctl00$ContentPlaceHolder_Content_Wraper$ctl01$Repeater_Selected$ctl00$CB_Selected" />

然后就可以使用代码了:

$('#s_' + this.id).find(':checkbox.CB_Selected').prop('checked', true);

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2017-08-22
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多