27

有没有办法在单选按钮列表中的输入项上设置 CSS 类?我想在 jQuery 中按类引用这些表单值。

给定一个在 ListItems 上设置类的 ASP.NET RadioButtonList:

 <asp:RadioButtonList ID="RadioButtonList" runat="server">
      <asp:ListItem class="myClass" Text="Yes" Value="1" />
      <asp:ListItem class="myClass" Text="No" Value="0" />
 </asp:RadioButtonList>

将呈现为:

 <span id="RadioButtonList" class="radioButtonListField myClass">
     <span class="myClass">
          <input id="RadioButtonList_0" type="radio" value="1" 
               name="RadioButtonList"/>
          <label for="RadioButtonList_0">Yes</label>
     </span>
     <span class="myClass">
          <input id="RadioButtonList_1" type="radio" value="0" 
               name="RadioButtonList"/>
          <label for="RadioButtonList_1">No</label>
     </span>
 </span>

不幸的是,“myClass”类被添加到<span>包含单选按钮项目的类中,而不是它<input>本身。我怎么能让它看起来像这样:

 <span id="RadioButtonList" class="radioButtonListField myClass">
     <span>
          <input id="RadioButtonList_0" class="myClass" type="radio" value="1" 
               name="RadioButtonList"/>
          <label for="RadioButtonList_0">Yes</label>
     </span>
     <span>
          <input id="RadioButtonList_1" class="myClass" type="radio" value="0" 
               name="RadioButtonList"/>
          <label for="RadioButtonList_1">No</label>
     </span>
 </span>

(这甚至没有涉及将类添加到动态绑定的 RadioButtonLists 的问题。)

4

5 回答 5

14

是的,RadioButtonList 呈现可怕的 HTML。

无论如何,从 jQuery 中获取它们仍然很容易。

尝试

$('span.myclass input:radio')

上面将获得类“myclass”的跨度内的所有单选按钮。

于 2009-07-01T19:48:18.873 回答
9

您可能想要尝试的另一种方法是更改​​您的 CSS 类以适应服务器控制渲染。

因此,在您的 CSS 中,而不是以下内容:

.myClass { ... }

你用这个:

.myClass input { ... }

我不知道你是否可以以声明的方式设置类属性(通过类或CSSClass);但是,以上内容应该可以解决您的问题。

于 2009-07-01T19:49:11.510 回答
3

未经测试

$('.myclass input:radio').each(function() {
        this.css({'style-name':'style-value'})
)};

呈现列表后,您可以使用上述语句操作 css 客户端。

于 2009-07-01T20:01:15.230 回答
2

使用 .NET,您可以为 RowBinding 事件创建一个事件处理程序。这将允许您访问列表中每个项目中的各个控件。拉出 RadioButton 控件后,您可以通过编程将其设置为 CssClass 以在 RadioButton 级别上应用您的类。

您还可以使用 jquery 查找应用了 myClass 的单选按钮控件,然后将另一个类应用于该控件。

第三,您可以只更改 MyClass 的定义以指定它仅应用于应用了 MyClass 的元素下的输入元素。

于 2009-07-01T19:50:30.913 回答
1

设计者的反应非常好..

为了使它适用于单选按钮,我必须在 document.ready() 上执行此操作

$('#<%=radRisksMarginTrading.ClientID  %>_0').addClass("validate[required]");
$('#<%=radRisksMarginTrading.ClientID  %>_1').addClass("validate[required]");

我确信通过循环有更好的方法来做到这一点,但我需要快速修复 5 个单选按钮列表..

于 2009-09-29T14:41:06.267 回答