ASP.NET – 设置CheckBox的CssClass

以下代码

((CheckBox)e.Row.FindControl("exportCb")).CssClass = "enabledExport"; 

创建html

  

对于asp.net gridview列

       

我需要使用jquery

 $('.enabledExport').toggle() 

选中/取消选中(作为切换)复选框。 因为CssClass上标记,所以代码将尝试切换而不是 。 我怎样才能解决这个问题?

我不介意解决方案是否在jquery或asp.net方面,只要它有效。 我喜欢它,如果代码只是标记输入像它应该…

如果您要显示/隐藏复选框,可以执行以下操作:

 $('.enabledExport input:checkbox').toggle() 

但我认为你要做的是:

 var $checkbox = $('.enabledExport input:checkbox'); $checkbox.attr("checked", !$checkbox.is(":checked")); 

最简单的解决方案是以这种方式设计jQuery选择器,它将选择位于span类的子项“enabledExport”的复选框。 在这种情况下,它看起来像:

 jQuery('.enabledCheckbox > :checkbox').toggle() 

要么

 jQuery(':checkbox', '.enabledCheckbox').toggle() 

您需要使用正确的cssclass并在其前面加上一个点。 所以你已经选择了你的跨度。 然后进入该范围并选中复选框。 这是绑定click事件:

 $(".enabledExport").click(function(){ var box = $(this).children(":checkbox"); box.is(":checked") ? box.removeAttr("checked") : box.attr("checked", "checked"); }); 

这是点击:

 $(".enabledExport").click(); 

我正在使用MasterSite页面,因此复选框元素id将ContentPlaceHolder信息添加到复选框ID中。 当页面加载时,我正在分配一个自定义属性来帮助查找元素(也可以使用foreach语句完成)。 这是后面的自定义属性代码:

protected void Page_Load(object sender,EventArgs e)

{

  if (!IsPostBack) { chkTxa.Attributes.Add("clientID", "chkTxa"); chkTxx.Attributes.Add("clientID", "chkTxx"); } 

}

我的两个复选框ID是:chkTxa和chkTxx。 我设置AutoPostBack =“False”因为我希望客户端负责复选框切换。 由于复选框位于html表中,因此浏览器将复选框包装在标记中。 这需要您做额外的工作才能找到复选框。 jQuery代码是这样的:

$(document).ready(function(){

  var chkTxa; var chkTxx; // dig into the  object to find the checkbox chkTxa = $("[clientID=chkTxa]").children(":checkbox"); chkTxx = $("[clientID=chkTxx]").children(":checkbox"); $(chkTxa).click(function () { if (!chkTxa.is(":checked")) { chkTxa.removeAttr("checked"); } else { chkTxx.removeAttr("checked"); } }); $(chkTxx).click(function () { if (!chkTxx.is(":checked")) { chkTxx.removeAttr("checked"); } else { chkTxa.removeAttr("checked"); } }); }); 

希望有人发现这很有用。

艾伦

$(".enabledExport+input").toggle()应该可以解决问题。